#include <stdio.h> #include <string.h> #define N 1000//最大1000位 int input(char n[]){ char s[N],temp; int i,j,positive; scanf("%s",s); j=strlen(s); for(i=0;i<N;i++){ n[i]=0; } if(s[0]=='-'){ positive=-1; for(i=0;i<j-1;i++){ temp=s[i];s[i]=s[i+1];s[i+1]=temp; } j=j-1; }else{ positive=1; } for(i=0;i<j;i++){ n[i]=s[j-i-1]-'0'; } return positive; } int multi(char p[],char q[],char r[],int posi1,int posi2){ int i=0,j=0;; for(i=0;i<N;i++){ r[i]=0; } for(i=0;i<strlen(p);i++) for(j=0;j<strlen(q);j++){ r[i+j]+=p[i]*q[j]; if(r[i+j]>=10){ r[i+j+1]+=r[i+j]/10; r[i+j]=r[i+j]%10; } } if(posi1*posi2==1) return 1; else return -1; } void output(char r[],int positive){ int i=0; for(i=N-1;i>=0;i--){ if(r[i]!=0) break; } if(positive==-1){ printf("-"); } for(;i>=0;i--){ printf("%d",r[i]); } putchar('\n'); } void main(){ char p[N],q[N],r[N]; int posi1,posi2,res1; posi1=input(p); posi2=input(q); output(p,posi1); output(q,posi2); res1=multi(p,q,r,posi1,posi2); output(r,res1); }