问题:大数-减法运算
题目描述
请计算两个整数相减(数的范围:0 <= num < 10^100)
输入
两行
第一行为整数n1
第二行为整数n2(本题中保证n1>=n2)
输出
一个整数
样例输入
20000000
10000000
样例输出
10000000
1 #include<stdio.h> 2 #include<string.h> 3 #define M 100000 4 int Inter_Sum[M]; 5 void fun(char str1[],char str2[]){ 6 int t,m=0,i=strlen(str1); 7 int k=0,p=strlen(str2)-1,j; 8 while(i--){ 9 if(p>=0) 10 t=(str1[i]-48)-(str2[p]-48); 11 else t=(str1[i]-48); 12 if(t>=0){ 13 Inter_Sum[k]=t; 14 m=0; 15 }else{ 16 if((str1[i-1]-48)!=0&&i-1>=0){ 17 str1[i-1]=str1[i-1]-1; 18 t=10+(str1[i]-48); 19 } 20 else if((str1[i-1]-48)==0&&i-1>=0){ 21 int y=i; 22 while((str1[y-1]-48)==0&&y-1>=0){ 23 str1[y-1]=str1[y-1]+9; 24 y--; 25 } 26 str1[y-1]=str1[y-1]-1; 27 } 28 t=10+(str1[i]-48); 29 Inter_Sum[k]=t-(str2[p]-48); 30 } 31 k++; 32 p--; 33 } 34 t=0; 35 for(j=k-1;j>=0;j--){ 36 37 if(!t){ 38 if(Inter_Sum[j]!=0)t++; 39 } 40 //printf("%d %d\n",j,t); 41 if(t) 42 printf("%d",Inter_Sum[j]); 43 44 } 45 if(t==0) printf("%d",Inter_Sum[j]); 46 47 } 48 int main(){ 49 char str1[M]; 50 char str2[M]; 51 scanf("%s %s",str1,str2); 52 str1[strlen(str1)]=‘\0‘; 53 str2[strlen(str2)]=‘\0‘; 54 fun(str1,str2); 55 return 0; 56 }