題目鏈接:UVA424
大數相加問題,模擬手算即可,具體看代碼:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; char number[255]={'0'}; int answer[260]={0}; void reverse(char* pointer); int main() { int maxIndex=0; while(scanf("%s",number)&&strcmp(number, "0")) { int length=strlen(number); reverse(number); int index; int carryBit=0; for(index=0;index<length;index++) { carryBit=answer[index]+(number[index]-'0')+carryBit; answer[index]=carryBit%10; carryBit=carryBit/10; } while(carryBit) { carryBit=answer[index]+carryBit; answer[index++]=carryBit%10; carryBit=carryBit/10; } if(index>maxIndex) maxIndex=index; } int flag=1; for(int i=maxIndex;i>0;i--) { if(flag) { if(answer[i]) { cout<<answer[i]; flag=0; } } else cout<<answer[i]; } cout<<answer[0]<<endl; memset(number,'0',255); return 0; } void reverse(char* pointer) { int length=strlen(pointer); char temp; for(int i=0,j=length-1;i<j;i++,j--) { temp=pointer[i]; pointer[i]=pointer[j]; pointer[j]=temp; } }