习题2.3 数列求和-加强版 (20分)
程序员文章站
2022-03-13 12:57:41
...
首先此题不能用传统的方法来做即:累加所有数字,这样会超时。
故自己模拟加法进位的形式来计算,每一位存在数组里,列:
input: 3 6
6
+ 66
+ 666
----------
= ? ? ?
#include <stdio.h>
#include <stdlib.h>
#define maxSize 1000000
int main(){
int A,N,i,sum=0,flag=0;
scanf("%d %d",&A,&N);
int minSize = maxSize;
int arr[maxSize];
if(N==0){
printf("0");
return 0;
}
for(i=0;i<N;i++){
arr[--minSize] = ((N-i)*A+flag)%10;
flag = ((N-i)*A+flag)/10;
}
if(flag!=0){
arr[--minSize] = flag;
}
for(i=minSize;i<maxSize;i++){
printf("%d",arr[i]);
}
}