描述:计算从1到n中,每个数字(0到9)出现的次数
其中sum[j]和dp[i]表示:数字i中 j 的个数;比如sum[1]和dp[5]就可以表示:5中1的个数为0;sum[1]和dp[11]就可以表示:11中1的个数为2;
#include<cstdio>
#include<cstring>
int dp[100001];
int main()
{
int n,sum[10];
while(~scanf("%d",&n))
{
memset(sum,0,sizeof(sum));
int j=0;
while(j<10)
{
memset(dp,0,sizeof(dp));
dp[j] = 1;
for (int i = 1; i <= n; i++)
{
dp[i] = dp[i%10];
if(i/10)
dp[i] += dp[i/10];
sum[j] += dp[i];
}
j++;
}
for(int i=0;i<10;i++)
printf("%d:%d\n",i,sum[i]);
}
return 0;
}