酷代码 AI
菜单

题目描述 给定一个十进制正整数 n n,写下从 1 1 到 n n 的所有整数,然后数一下每个数的各个数位中出现的数字 1 1 的个数。 例如: 当 n = 2 n=2 时,写下 1 , 2 1,2。这样只出现了 1 1 个 1 1; 当 n = 12 n=12 时,写下 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 1,2,3,4,5,6,7,8,9,10,11,12。这样出现了 5 5 个 1 1。 输入格式 一行,一个正整数 n n。 输出格式 一个正整数,即 1 1 的个数。 input1 复制 9 output1 复制 1 input2 复制 12 output2 复制 5 数据规模与约定 对于 100 % 100% 的数据, 1 ≤ n ≤ 10000 1≤n≤10000。 C++

```cpp #include <iostream> using namespace std; // 此函数用于计算一个数中数字1的个数 int countOnesInNumber(int num) { int count = 0; while (num > 0) { // 检查当前数字的最后一位是否为1 if (num % 10 == 1) { count++; } // 去掉最后一位数字 num /= 10; } return count; } // 此函数用于计算从1到n中所有数字里数字1的总个数 int countOnesFromOneToN(int n) { int totalOnes = 0; for (int i = 1; i <= n; i++) { // 累加每个数字中1的个数 totalOnes += countOnesInNumber(i); } return totalOnes; } int main() { int n; // 读取输入的正整数n cin >> n; // 调用函数计算从1到n中数字1的总个数 int result = countOnesFromOneToN(n); // 输出结果 cout << result << endl; return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 在 `countOnesInNumber` 函数里,要确保循环结束条件正确,避免出现死循环。 2. 注意输入的 `n` 的范围,在本题中,虽然已经限定了范围,但在其他场景下可能需要对输入的有效性进行检查。 3. 当计算从1到 `n` 每个数中1的个数时,要保证循环的起始和结束条件准确,避免遗漏或重复计算。 [2026-01-26 17:56:10 | AI写代码神器 | 413点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多