链接:
https://www.nowcoder.com/acm/contest/118/E
来源:牛客网
Kirai其实十分高冷,他发现了这个问题。为了不希望别人立刻知道他在笑,他决定将两个“233..”乘在一起发出去。
来源:牛客网
题目描述
Kirai聊天的时候非常喜欢发“233”,“233”来源于猫扑表情第233号,是一张捶地大笑的表情。
Kirai每当看到很好玩的消息的时候总会回一串“2333...”。
Kirai其实十分高冷,他发现了这个问题。为了不希望别人立刻知道他在笑,他决定将两个“233..”乘在一起发出去。
输入描述:
输入样例有多组,全部是正整数。首先输入样例组数T(T≤1500)。 接下来输入T组数,每组数字由两个233串组成,每个233串长度3≤n≤50。 数据保证每个233串必然会有一个2作为开头,并且3的数量≥2。
输出描述:
两个233串的乘积。
//我的队友是用java的BigInteger写的,我这里用一个c++的大数模板 #include<bits/stdc++.h> using namespace std; const double Pi=3.1415926535898; int main() { int T,i,j,k; string q1,q2,q3; int a[100000],b[100000],c[100000]; cin>>T; while(T--) { cin>>q1>>q2; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); a[0]=q1.length(); b[0]=q2.length(); for(i=1;i<=a[0];i++) a[i]=q1[a[0]-i]-48; for(i=1;i<=b[0];i++) b[i]=q2[b[0]-i]-48; int x; for(i=1;i<=a[0];i++) { x=0; for(j=1;j<=b[0];j++) { c[i+j-1]+=a[i]*b[j]+x; x=c[i+j-1]/10; c[i+j-1]%=10; } c[i+b[0]]=x; } int lenc=a[0]+b[0]; while(c[lenc]==0&&lenc>1) lenc--; for(i=lenc;i>=1;i--) cout<<c[i]; cout<<endl; } return 0; }