#include<stdio.h> #include<string.h> void calsum(int *a, int *b, int *ans){ for(int i=0;i<60;++i){ ans[i]+=a[i]+b[i]; if(ans[i]>=10){ ans[i]%=10; ++ans[i+1]; } } } void calmins(int *a, int *b, int *ans){ for(int i=0;i<60;++i){ ans[i]+=a[i]-b[i]; while(ans[i]<0){ --ans[i+1]; ans[i]+=10; } } } void printans(int *ans, int len){ int flag=0; for(int i=len-1;i>=0;--i){ if(ans[i]!=0) flag=1; if(flag){ printf("%d",ans[i]); } } if(!flag) printf("0"); } int main(){ char a[60],b[60]; gets(a); gets(b); int n1[60]={0},n2[60]={0},n1sign=1,n2sign=1; int n1len=strlen(a),n2len=strlen(b); if(a[0]=='-') n1sign=0; if(b[0]=='-') n2sign=0; for(int i=n1len-1,j=0;i>=0&&a[i]!='-';--i,++j){ n1[j]=a[i]-'0'; } for(int i=n2len-1,j=0;i>=0&&b[i]!='-';--i,++j){ n2[j]=b[i]-'0'; } int abig=1; if(!n1sign) --n1len; if(!n2sign) --n2len; if(n2len>n1len) abig=0; else if(n1len==n2len){ for(int i=n1len;i>=0;--i){ if(n1[i]>n2[i]) break; else if(n1[i]==n2[i]) continue; else{ abig=0; break; } } } int sum[60]={0}; if(n1sign&&n2sign){ calsum(n1,n2,sum); printans(sum,60); }else if(!n1sign&&!n2sign){ printf("-"); calsum(n1,n2,sum); printans(sum,60); }else if(n1sign&&abig){ calmins(n1,n2,sum); printans(sum,60); }else if(n1sign&&!abig){ calmins(n2,n1,sum); if(sum[0]!=0) printf("-"); printans(sum,60); }else if(n2sign&&abig){ calmins(n1,n2,sum); if(sum[0]!=0) printf("-"); printans(sum,60); }else{ calmins(n2,n1,sum); printans(sum,60); } printf("\n"); int mins[60]={0}; if(n1sign&&!n2sign){ calsum(n1,n2,mins); printans(mins,60); }else if(!n1sign&&n2sign){ printf("-"); calsum(n1,n2,mins); printans(mins,60); }else if(n1sign&&abig){ calmins(n1,n2,mins); printans(mins,60); }else if(n1sign&&!abig){ calmins(n2,n1,mins); if(mins[0]!=0) printf("-"); printans(mins,60); }else if(!n1sign&&abig){ calmins(n1,n2,mins); if(mins[0]!=0) printf("-"); printans(mins,60); }else{ calmins(n2,n1,mins); printans(mins,60); } printf("\n"); int product[121]={0}; for(int i=0;i<60;++i){ for(int j=0;j<60;++j){ product[i+j]+=n1[i]*n2[j]; while(product[i+j]>=10){ product[i+j+1]+=product[i+j]/10; product[i+j]%=10; } } } if((n1sign&&!n2sign)||(!n1sign&&n2sign)) printf("-"); printans(product,121); return 0; }
|