//原始代码,测试点4一直超时
# include <stdio.h>
int main()
{
int r[10000]={0};
int i, j;
int a, n;
scanf("%d%d",&a,&n);
if(n == 0)
{
printf("0\n");
return 0;
}
for(i = 0; i < n; i ++)
{
for(j = n-i; j > 0; j --)
{
r[i] += a;
if(r[i] > 9)
{
r[i+1] += r[i]/10;
r[i] = r[i]%10;
}
}
}
if(r[n] != 0)
{
printf("%d",r[n]);
}
for(i = n-1; i >= 0; i --)
{
printf("%d",r[i]);
}
return 0;
}
修正后
# include <stdio.h>
int main()
{
int r[100000];
int a, n;
int con = 0;//商
int i;
scanf("%d%d",&a,&n);
if(n == 0)
{
printf("0\n");
return 0;
}
for(i = 0; (i < n) || (i==n&&con!=0); i ++)
{
r[i] = (a*(n-i)+con)%10;
con = (a*(n-i)+con)/10;
}
for(i --; i >= 0; i --)
{
printf("%d",r[i]);
}
return 0;
}