链接:
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;
}