六:大数运算-减法运算
2017-12-28 09:21
225 查看
问题:大数-减法运算
题目描述
请计算两个整数相减(数的范围:0 <= num < 10^100)
输入
两行
第一行为整数n1
第二行为整数n2(本题中保证n1>=n2)
输出
一个整数
样例输入
20000000
10000000
样例输出
10000000
题目描述
请计算两个整数相减(数的范围: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; }
相关文章推荐
- 大数减法运算
- 大数减法运算
- Java常用数字工具类 大数乘法、加法、减法运算(2)
- 大数运算——加法减法
- 大数运算(3)——大数减法
- C语言大数运算-减法篇
- [算法题] 大数减法运算
- 单链表实现大数加法、大数减法、大数乘法、大数指数运算
- Java工作利器之常用工具类(二)——数字工具类-大数乘法、加法、减法运算
- C++大数运算之加法,减法
- 大数运算-减法(C/C++实现)
- 大数运算——加法,减法,乘法 .
- 大数运算——加法减法
- 高精度_大数除模小数运算
- SML-大数运算问题
- 大数减法
- js的大数运算 跟经典的收藏 结合前一篇的收藏 解决工作中的一个大数进制转换问题
- 大数加法、减法、乘法
- Java大数模板——加法、减法、乘法、除法、开方、求余
- java大数算法完成五则运算之除及取余