小工具知识网

当前位置: 首页 > 行业知识 > 0301

行业知识

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 

上一篇:滨州联想服务器怎么收费?

下一篇:怎么操作云服务器系统设置?