您的位置:首页 > 其它

六:大数运算-减法运算

2017-12-28 09:21 225 查看
问题:大数-减法运算

题目描述


请计算两个整数相减(数的范围:0 <= num < 10^100)
输入

两行

第一行为整数n1

第二行为整数n2(本题中保证n1>=n2)
输出

一个整数
样例输入

20000000

10000000
样例输出

10000000

#include<stdio.h>
#include<string.h>
#define M 100000
int Inter_Sum[M];
void fun(char str1[],char str2[]){
int t,m=0,i=strlen(str1);
int k=0,p=strlen(str2)-1,j;
while(i--){
if(p>=0)
t=(str1[i]-48)-(str2[p]-48);
else t=(str1[i]-48);
if(t>=0){
Inter_Sum[k]=t;
m=0;
}else{
if((str1[i-1]-48)!=0&&i-1>=0){
str1[i-1]=str1[i-1]-1;
t=10+(str1[i]-48);
}
else if((str1[i-1]-48)==0&&i-1>=0){
int y=i;
while((str1[y-1]-48)==0&&y-1>=0){
str1[y-1]=str1[y-1]+9;
y--;
}
str1[y-1]=str1[y-1]-1;
}
t=10+(str1[i]-48);
Inter_Sum[k]=t-(str2[p]-48);
}
k++;
p--;
}
t=0;
for(j=k-1;j>=0;j--){

if(!t){
if(Inter_Sum[j]!=0)t++;
}
//printf("%d %d\n",j,t);
if(t)
printf("%d",Inter_Sum[j]);

}
if(t==0) printf("%d",Inter_Sum[j]);

}
int main(){
char str1[M];
char str2[M];
scanf("%s %s",str1,str2);
str1[strlen(str1)]='\0';
str2[strlen(str2)]='\0';
fun(str1,str2);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: