【C/C++】习题3-3 数数字/算法竞赛入门经典/数组和字符串
阅读原文时间:2023年07月08日阅读:1

【题目】

把前n个(n<=10000)的整数顺序写在一起:123456789101112……

数一数0~9各出现多少次(输出10个整数,分别是0,1,2,……,9出现的次数)

【解答】

暴力求解:统计0,1,…,n的所有数字,每个多位数的每个的出现次数,用一个数组存储。

【代码】

#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int a[10]; //存储0~9的出现次数

int main()
{
    memset(a,0,sizeof(a));
    int n;
    scanf("%d",&n);
    for (int i = 0; i <= n; i++)
    {
        int tot = i; //注意不要直接对i操作,不然会死循环,设置一个接收变量
        while(tot)
        {
            int temp;
            temp = tot%10; //考察最后一位
            a[temp]++; //计数
            tot /= 10; //去掉最后一位
        }
    }
    for (int i = 0; i <= 9; i++)
    {
        printf("%d has %d\n",i,a[i]);
    }
    system("pause");
}

递归法:

https://blog.csdn.net/qq_40054352/article/details/88594932