题目链接:7-38 数列求和-加强版
一. 题目
1. 题目
2. 输入输出样例
3. 限制
二、代码
1. 代码实现
#include <stdio.h>
#include <string.h>
#include <malloc.h>void addTerm(char *sum, int A, int N);int main() {int A, N;char *sum;// 读取输入if (scanf("%d %d", &A, &N) != 2) {return -1;}sum = calloc(N + 1, sizeof(char)); // 多分配一个字符给结束符'\0'addTerm(sum, A, N);// 若 N == 0if (!N) {sum[0] = '0';}printf("%s", sum);free(sum);return 0;
}void addTerm(char *sum, int A, int N) {int carry = 0;int digitSum;int i;// 从最低位开始逐位相加for (i = N - 1; i >= 0; i--) {digitSum = (i + 1) * A + carry; // 第i位的值为(i + 1) * A,再加进位sum[i] = (digitSum % 10) + '0';carry = digitSum / 10;}// 如果还有进位if (carry) {printf("%d", carry);}
}