给定进制的 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 等编程语言来完成。我们希望您觉得本教程有用。