链接:https://www.nowcoder.com/acm/contest/118/E
来源:牛客网
题目描述

Kirai聊天的时候非常喜欢发“233”,“233”来源于猫扑表情第233号,是一张捶地大笑的表情。
Kirai每当看到很好玩的消息的时候总会回一串“2333...”。
Kirai其实十分高冷,他发现了这个问题。为了不希望别人立刻知道他在笑,他决定将两个“233..”乘在一起发出去。
输入描述:
输入样例有多组,全部是正整数。首先输入样例组数T(T≤1500)。 接下来输入T组数,每组数字由两个233串组成,每个233串长度3≤n≤50。 数据保证每个233串必然会有一个2作为开头,并且3的数量≥2。
输出描述:
两个233串的乘积。
示例1
输入
2 233 233 23333333333333333333333333333333333333333333333333 23333333333333333333333333333333333333333333333333
输出
54289 544444444444444444444444444444444444444444444444428888888888888888888888888888888888888888888888889
#include<stdio.h>
#include<string.h>
#include<math.h>
void reverse(char a[],int b[])
{
int l=strlen(a);
for(int i=0;i<l;i++)
b[l-1-i]=a[i]-'0';
}
int main()
{
//freopen("D:\\插件\\Dev-Cpp\\新建文件夹\\test.txt","r",stdin);
int n,i,j;
char a[51],b[51];
int c[51],d[51];
scanf("%d",&n);
getchar();
while(n--){
scanf("%s%s",a,b);
reverse(a,c);reverse(b,d);
int la=strlen(a); int lb=strlen(b);
int temp[102];char product[102];
memset(temp,0,sizeof(temp));
memset(product,'0',sizeof(product));
for(i=0;i<lb;i++){
int start=i;
for(j=0;j<la;j++){
temp[start++]+=c[j]*d[i];
}
}
for(i=0;i<102;i++){
if(temp[i]>9){
temp[i+1]+=temp[i]/10;
temp[i]=temp[i]%10;
}
}
for(i=101;i>=0;i--)
if(temp[i]) break;
int lp=i+1;
for(i=0;i<lp;i++) product[lp-1-i]=temp[i]+'0';
product[lp]='\0';
printf("%s\n",product);
}
return 0;
}