行业知识
0301
2026-11-09 13:46:09
来源:互联网转载
���录
()Problem A 统计数字问题
1.题目描述
()2.思路分析
3.代码实现
Problem B 字典序问题
1.题目描述
2.思路分析
3.代码实现
Problem C 最多约数问题
1.题目描述
2.思路分析
3.代码实现
Problem A 统计数字问题
1.题目描述
题目描述
问题描述:
一本书的页码从自然数 1 开始顺序编码直到自然数 n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字 0。例如,第 6 页用数字 6 表示,而不是 06 或 006 等。数字计数问题要求对给定书的总页码 n,计算出书的全部页码中分别用到多少次数字 0,1,
2,…,9。
编程任务:
给定表示书的总页码的 10 进制整数 n (1≤n≤109) 。编程计算书的全部页码中分别用到多少次数字 0,1,2,…,9。
输入
给出表示书的总页码的整数 n
输出
输出共有10行,在第 k 行输出页码中用到数字 k-1 的次数,k=1,2,…,10。
样例输入
11
样例输出
1411111111
提示
输入范围1-1000000000
2.思路分析
其实这个问题可以拆分为我们以前做过的规模更小的题目,总的来说,就是从1到输入的整形数据进行一个循环,在每一个循环周期内需要把当前页码数字的每一位拆出来,然后对每一位对应的数字进行累加计数。
因此我们很容易写代码,循环直接用最简单的for循环,拆数字时可以用到%运算,计数也只需要开一个容量为10的整形数组,下标与0-9一一对应即可。
3.代码实现
#include using namespace std; int num[10] = { 0 }; void cal(int n){ while (n >= 9) { num[n % 10]++; n /= 10; } if (n != 0) num[n]++;} int main(){ int n; cin >> n; for (int i = n; i > 0; i--) { cal(i); } for (int i = 0; i > s; for (i = 0; i = s[i + 1]) { break; } } if (i
上一篇:滨州联想服务器怎么收费?
下一篇:怎么操作云服务器系统设置?