#include<iostream> #include<cstring> using namespace std; struct bignum { int len; int num[505]; bignum() { memset(num,0,sizeof(num)); } } a,b,c; int cmp(bignum a,bignum b) { if(a.len>b.len)return 1; if(a.len<b.len)return 0; for(int i=1; i<=a.len; i++) { if(a.num[i]>b.num[i])return 1; } return 0; } bignum bigMinus(bignum a,bignum b) { bignum c; int clen=a.len; for(int i=1; i<=a.len; i++) { c.num[i]=a.num[i]-b.num[i]; if(c.num[i]<0) { c.num[i]+=10; a.num[i+1]--; } } while(c.num[clen]==0)clen--; c.len=clen; return c; } bignum bigAdd(bignum a,bignum b) { bignum c; int clen=a.len; for(int i=1; i<=a.len+1; i++) { c.num[i]=a.num[i]+b.num[i]; if(c.num[i]>=10) { c.num[i]-=10; a.num[i+1]++; } } if(c.num[clen+1])clen++; c.len=clen; return c; } bignum bigMultiply(bignum a,bignum b) { bignum c; int clen=a.len+b.len-1; for(int i=1; i<=a.len; i++) for(int j=1; j<=b.len; j++) { c.num[i+j-1]+=a.num[i]*b.num[j]; if(c.num[i+j-1]>=10) { c.num[i+j]+=c.num[i+j-1]/10; c.num[i+j-1]%=10; } } if(c.num[clen+1])clen++; c.len=clen; return c; }
调用:
int main() { string num1,num2; cin>>num1>>num2; a.len=num1.length(); b.len=num2.length(); for(int i=0; i<a.len; i++) { a.num[a.len-i]=num1[i]-'0'; } for(int i=0; i<b.len; i++) { b.num[b.len-i]=num2[i]-'0'; } if(cmp(a,b)) { c=bigAdd(a,b); } else { c=bigAdd(b,a); } // if(cmp(a,b)){ // c=bigMinus(a,b) // }else{ // printf("-"); // c=bigMinus(b,a); // } // c=bigMultiply(a,b); for(int i=c.len; i>0; i--) { cout<<c.num[i]; } }
┆凉┆暖┆降┆等┆幸┆我┆我┆里┆将┆ ┆可┆有┆谦┆戮┆那┆ ┆大┆始┆ ┆然┆
┆薄┆一┆临┆你┆的┆还┆没┆ ┆来┆ ┆是┆来┆逊┆没┆些┆ ┆雁┆终┆ ┆而┆
┆ ┆暖┆ ┆如┆地┆站┆有┆ ┆也┆ ┆我┆ ┆的┆有┆精┆ ┆也┆没┆ ┆你┆
┆ ┆这┆ ┆试┆方┆在┆逃┆ ┆会┆ ┆在┆ ┆清┆来┆准┆ ┆没┆有┆ ┆没┆
┆ ┆生┆ ┆探┆ ┆最┆避┆ ┆在┆ ┆这┆ ┆晨┆ ┆的┆ ┆有┆来┆ ┆有┆
┆ ┆之┆ ┆般┆ ┆不┆ ┆ ┆这┆ ┆里┆ ┆没┆ ┆杀┆ ┆来┆ ┆ ┆来┆