高精度运算经典题目-减法神童
Posted lightworkshopnoi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度运算经典题目-减法神童相关的知识,希望对你有一定的参考价值。
【问题描述】
两个任意十一位数的减法;(小于二十位)
【输入说明】
输入两个数,分两行
【输出说明】
输出两个数的差值;(被减数比减数要大)
#include <bits/stdc++.h> using namespace std; const int maxL=200; string s1,s2; int lena,lenb,lenc; int a[maxL],b[maxL],c[maxL]; void subtract(int a[],int lena,int b[],int lenb,int c[],int &lenc) memset(c,0,sizeof(c)); lenc=lena; for(int i=0;i<lenc;++i) c[i]+=a[i]-b[i]; if(c[i]<0) --c[i+1]; c[i]+=10; //删除前导0 for(; lenc>1 && c[lenc-1]==0;--lenc); int main() cin>>s1>>s2; lena=s1.length(); lenb=s2.length(); //s1所表示的数比S2的情况 if(lena<lenb || (lena==lenb && s1<s2)) swap(s1,s2); swap(lena,lenb); cout<<‘-‘; for(int i=0;i<lena;++i) a[i]=s1[lena-i-1]-‘0‘; for(int i=0;i<lena;++i) b[i]=s2[lena-i-1]-‘0‘; subtract(a,lena,b,lenb,c,lenc); for(int i=lenc-1;i>=0;--i) cout<<c[i]; cout<<endl; return 0;
以上是关于高精度运算经典题目-减法神童的主要内容,如果未能解决你的问题,请参考以下文章