高精度加法笔记
为啥要写这篇博客对这种基础算法做笔记嘞,因为我被一道简单的加法题卡了很久🤗所以借这个机会来巩固一下数组的用法。
以下是题目:
数列求和-加强版
给定某数字$A(1≤A≤9)$以及非负整数$N(0≤N≤100000)$,求数列之和$S=A+AA+AAA+⋯+AA⋯A(N$个$A)$。例如$A=1$, $N=3$时,$S=1+11+111=123$。
输入格式:
输入数字$A$与非负整数$N$。
输出格式:
输出其$N$项数列之和$S$的值。
输入样例:
1 3
输出样例:
123
代码:
#include <stdio.h>
int array[100000];
int main() {
int i, a, n, temp = 0;
scanf("%d%d", &a, &n);
for (i = 1; i <= n; i++) {
array[i] = a * i; //先计算好各个位的原本的数
}
for (i = n; i > 1; i--) {
array[i] = (array[i] + temp); //加上进位的数
temp = array[i] / 10; //进位
}
array[i] = array[i] + temp; //最后一位不能省去出去个位的数
printf("%d", array[1]);
for (i = 2; i <= n; i++) {
printf("%d", array[i] % 10);
}
return 0;
}