题目链接:http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=1288
这题一开始用了两种不同的方法做,都是RE,WA的,毫无思路。。。上次在图书馆看了本书上有类似的东西,就套用了一下,似乎用的什么“分治”,还没怎么看得懂,也放着,等待探索!!
code:

#include <stdio.h>
int value;
int d[11];
void deal(int n)
{
if(n<=0)
return ;
int one,ten;
one=n%10;
n/=10;
ten=n;
for(int i=0;i<=one;i++)
d[i]+=value;
while(ten)
{
d[ten%10]+=(one+1)*value;
ten/=10;
}
for(int i=0;i<10;i++)
d[i]+=value*n;
d[0]-=value;
value*=10;
deal(n-1);
}
int main()
{
int a,i;
scanf("%d",&a);
for(i=0;i<10;i++)
d[i]=0;
value=1;
deal(a);
for(i=0;i<10;i++)
printf("%d\n",d[i]);
return 0;
}
菜鸟之作,仅供参考,如有错误,请您指出——Tamara 

发表评论

电子邮件地址不会被公开。

Post Navigation