注意: 这里有一个问题是最终的结果可能会非常大,这个时候C语言中的数据类型无法表示准确的结果,因此要考虑使用另一种存放结果的方式,通过一个数组存放结果。
这时问题就变成了如何确定每一位上面的数据,显而易见,对于各位就是所有的个位加起来最终的个位数字,然后用一个数字存放进位信息。
#include <stdio.h>
#define MAXSIZE 1000000
int result[MAXSIZE];
int sum(int A,int N)
{
int i,p,flag = 0;
for(i=0;i<N;i++)
{
result[i] = ((N-i)*A+flag)%10;
flag = (((N-i)*A+flag))/10;//注意这里是因为int类型足够存放进位的数字,如果数据更大的时候要小心溢出问题。
p = i;//记录最高位的位置
}
if(flag!=0)
{
result[i] = flag;
p = i;
}
return p;
}
int main()
{
int A, N;
int index;
scanf("%d %d",&A,&N);
index = sum(A, N);
for(index;index>=0;index--)
printf("%d",result[index]);
return 0;
}