【题目】
把前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
",i,a[i]);
}
system("pause");
}
递归法:
https://blog.csdn.net/qq_40054352/article/details/88594932