http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=14340
思路:
模拟手动加法运算
(1)大数用数组存储,逆序
(2)计算两个数每一位相加,然后进位
#include<stdio.h> #include<string.h> #define N 110 void add(); void reverse(); void summ(); int sum[N],b[N]; char a[N]; int l; int main(){ memset(sum,0,sizeof(sum)); l=0; while(scanf("%s",a)!=EOF){ if(strcmp(a,"0")==0){ break; } reverse(); add(); } summ(); for(int i=l-1;i>=0;i--){ printf("%d",sum[i]); } return 0; } void reverse(){ int len=strlen(a); for(int i=len-1;i>=0;i--){ b[len-i-1]=a[i]-‘0‘;//字符转化为数字 } } void add(){ int len=strlen(a); int t=len; for(int i=0;i<len;i++){ sum[i]=b[i]+sum[i]; } if(l<t) l=t; } void summ(){ for(int i=0;i<l;i++){ int s=sum[i]; if(s>=10){ sum[i]=s%10; sum[i+1]+=s/10; if(i==l-1) { l++; break; } } } }
时间: 2024-10-03 21:53:38