大数相乘 a*b
//zznu 1562
//用数组模拟乘法计算的过程
#include<iostream> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<ctype.h> #include<algorithm> using namespace std; #define N 500 #define INF 0x3f3f3f3f int sum[N], len1, len2; void solve(char a[], int b[]) { int len=strlen(a), k; k=0; for(int i=len-1; i>=0; i--) b[k++]=a[i]-'0'; } void mul(int num, int b[], int k) { for(int i=0; i<len2; i++) sum[k++]+=b[i]*num; for(int i=0; i<len2+len1; i++) { sum[i+1]+=sum[i]/10; sum[i]%=10; } } void put() { int i=N-1; while(!sum[i]) i--; printf("%d", sum[i]); for(i--; i>=0; i--) printf("%d", sum[i]); printf("\n"); } int main() { char A[N], B[N]; int T; int a[N], b[N], cnt=1; scanf("%d", &T); getchar(); while(T--) { scanf("%s%s", A, B); solve(A, a); solve(B, b); len1=strlen(A); len2=strlen(B); memset(sum, 0, sizeof(sum)); for(int i=0; i<len1; i++) mul(a[i], b, i); if(cnt>1) printf("\n"); printf("Case %d:\n", cnt++); printf("%s * %s = ", A, B); put(); } return 0; }