用C++代码计算当且仅当它的十进制数位上,全部数位的数字都相同。给定—个正整数,请问[1,n] 中有多少个好数。n的范围是1到10的5次方
时间: 2024-09-29 15:10:04 浏览: 84
在C++中,我们可以编写一个函数来判断一个正整数是否为"好数",即所有数位都相同的数,并统计1到n范围内这样的好数的数量。这里假设我们所说的好数是指非零数,因为如果允许0作为好数,则在范围[1, n]中好数只有一个,即n本身。
首先,我们需要一个辅助函数`isGoodNumber(int num)`来检查一个数的所有数位是否相同:
```cpp
#include <iostream>
#include <string>
bool isGoodNumber(int num) {
std::string str_num = std::to_string(num);
for (size_t i = 1; i < str_num.length(); ++i) {
if (str_num[i] != str_num[0]) {
return false;
}
}
return true;
}
```
然后,我们可以遍历1到n并计数:
```cpp
int countGoodNumbers(int n) {
int count = 0;
for (int i = 1; i <= n; ++i) {
if (isGoodNumber(i)) {
++count;
}
}
return count;
}
int main() {
int n;
std::cout << "请输入一个范围上限 (1 to 1e5): ";
std::cin >> n;
int goodNumCount = countGoodNumbers(n);
std::cout << "在[1, " << n << "]中有 " << goodNumCount << " 个好数。\n";
return 0;
}
```
在这个程序中,用户需要输入n的值,然后程序会输出该范围内好数的数量。请注意,这个代码适用于不超过10^5范围内的n值。
阅读全文