大数加法。
#include<cstdio> #include<cstring> using namespace std; int main() { char str[105][105]; int num[105][105]; int sum[105]; int len[105]; int i = 0,maxlen = 0; memset(num,sizeof(num)); memset(sum,sizeof(sum)); while(scanf("%s",str[i++]) && str[i-1][0]!='0') { } for(int j = 0 ; j < i ; j++) { len[j] = strlen(str[j]); if(maxlen < len[j]) { maxlen = len[j]; } int cnt = 0; for(int k = len[j] - 1 ; k >=0 ; k--) //翻转, { num[j][cnt++] = str[j][k] - '0'; } } for(int j = 0 ; j < i ; j++) //相加 { for(int k = 0 ; k < len[j] ; k++) { sum[k] += num[j][k]; } } for(int j = 0 ; j < maxlen ; j++) //进位 { if(sum[j] > 9) { sum[j+1] += sum[j]/10; sum[j] = sum[j]%10; if(j==maxlen-1) { maxlen++; } } } for(int j = maxlen - 1 ; j >= 0 ; j --) //输出 { printf("%d",sum[j]); } putchar(10); return 0; } //大数加法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。