给定进制的 C++ 全数字

c++server side programmingprogramming

包含从 0 到进制 B 的所有数字的数字称为该进制的全数字。但是,有些数字的数字从 1 到 9,称为无零全数字。全数字的一些示例是 0123456789、0789564312 等。

在本教程中,我们将讨论一个问题,给定一个数字和一个基数,我们需要检查该数字在给定基数下是否是全数字,例如 −

输入:num = “9651723467380AZ”,base = 10
输出:YES
解释:num 包含基数 10 中的所有数字,即从 0 到 9,因此它是一个全数字。

输入:num = “130264ABCDE745789”, base = 16
输出:NO
解释:num 不包含以 16 为基数(即从 0 到 15)的 F(15),因此它不是全数字。

寻找解决方案的方法

为了解决这个问题,我们将使用 Set 并将每个数字插入集合中,因为我们需要存储唯一的值。

  • 遍历字符串,一次取一个字符。

  • 然后检查元素是整数还是字母。

  • 如果是字母,则在字母表上的位置上加 10 以表示 2 位数字。

  • 将值存储在集合中。

  • 遍历后,检查集合的大小是否等于基数。

示例

上述方法的 C++ 代码

 
#include<bits/stdc++.h>
using namespace std;
int main(){
    int base = 10;
    char n[] = "9651723467380AZ";
    // 声明 set 以存储唯一值。
    set<int, greater<int> > s;
    // 遍历字符串。
    for (int i = 0; i < strlen(n); i++){
        // 检查元素是否为整数。
        if (n[i] >= '0' && n[i] <= '9')
           s.insert(n[i]- '0');
        // 检查元素是否为字母表。
        else if (n[i] - 'A' <= base - 11)
             s.insert(n[i] - 'A' + 10) ;
    }
    // 检查所有数字是否存在。
    if(s.size()==base)
    cout<< &"YES&";
    else
        cout<< &"NO&";
    return 0;
}

输出

结论

在本教程中,我们讨论了一个给定数字和基数的问题。我们需要确定该数字是否是全数字。我们讨论了一种解决此问题的简单方法,即在集合中插入值并使用基数检查其大小。我们还讨论了此问题的 C++ 程序,我们可以使用 C、Java、Python 等编程语言来完成。我们希望您觉得本教程有用。


相关文章