踩坑之夜:大整数加法
1023题目链接
- 注意'0'与0
- char[]结尾手动加结束符'\0';
- 输出开头不带0
#include <stdio.h>
#include <string.h>
int main() {
char number1[22], number2[22];
int digit1[10], digit2[10];
scanf("%s", number1);
int len = strlen(number1), next = 0;
for (int j = 0; j < 10; ++j) {
digit1[j]=0,digit2[j]=0;
}
for (int i = len - 1; i >= 0; i--) {
digit1[number1[i] - '0']++;
int temp = 2 * (number1[i] - '0');
number2[i + 1] = '0' + temp % 10 + next;
digit2[number2[i + 1] - '0']++;
next = temp / 10;
}
number2[0]='0'+next;
number2[len+1]='\0';
if (next != 0) {
puts("No");
printf("%s\n", number2);
} else {
int i = 0;
while (i<=9&&digit1[i] == digit2[i])i++;
if (i > 9) {
puts("Yes");
printf("%s\n", number2 + 1);
} else {
puts("No");
printf("%s\n", number2 + 1);
}
}
return 0;
}
网友评论