PKU 2389 Bull Math
http://poj.org/problem?id=2389
多倍長の掛け算をするという問題。
JAVAならBig Integer使うだけの問題。
この前書いた多倍長掛け算のコードを貼り付けて終わり。
リーディングゼロとかは全然考慮する必要はないようでした。
string ret; string add(const string&a,const string&b){ ret.clear(); int as=a.size(),bs=b.size(); int c=0; rep(i,max(as,bs)){ int t=c; if(i<as)t+=a[as-i-1]-'0'; if(i<bs)t+=b[bs-i-1]-'0'; c=t/10; t%=10; ret+=t+'0'; } if(c)ret+=c+'0'; reverse(ALL(ret)); return ret; } string mulcret; string multc(char m,const string&a){ m-='0'; mulcret.clear(); int c=0; int as=a.size(); rep(i,as){ int t=c+m*(a[as-i-1]-'0'); c=t/10; t%=10; mulcret+=t+'0'; } if(c)mulcret+=c+'0'; reverse(ALL(mulcret)); return mulcret; } string mulret; string mult(const string&a,string b){ mulret.clear(); int as=a.size(); rep(i,as){ mulret=add(mulret,multc(a[as-i-1],b)); b+='0'; } return mulret; } main(){ string a,b; cin>>a>>b; cout<<mult(a,b)<<endl; }