阅读 211

给定基数中的 C++ 泛数字数

包含从 0 到基数 B 的所有数字的数字称为该基数中的泛数字数。但是,有些数字具有从 1 到 9 的数字,称为无零泛数字。泛数字号码的一些示例是 0123456789、0789564312 等。

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


Input: num = “9651723467380AZ”, base = 10Output: YESExplanation: num contains all the digits in the base 10i.efrom 0 to 9, so it is a pandigital number.Input: num = “130264ABCDE745789”, base = 16Output: NOExplanation: num does not contain F(15) which is in the base 16i.efrom 0 to 15, so it is not a pandigital number.


寻找解决方案的方法

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

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

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

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

  • 将值存储在集合中。

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

示例

上述方法的 C++ 代码


 #include<bits/stdc++.h>using namespace std;int main(){
    int base = 10;
    char n[] = "9651723467380AZ";
    // 声明集以存储唯一值。    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;
}

输出结果

YES


结论

在本教程中,我们讨论了一个给定数字和底数的问题。我们需要找出这个数字是否是泛数字的。我们讨论了通过在集合中插入值并使用基检查其大小来解决此问题的简单方法。我们还讨论了针对这个问题的 C++ 程序,我们可以使用 C、Java、Python 等编程语言来解决这个问题。我们希望本教程对您有所帮助。


文章分类
百科问答
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐