高精度减法
📋 个人简介
🎉大家好,我是3月份新人榜排名第三的 ༺Blog༒Hacker༻
💬支持我:点赞👍+收藏⭐️+留言📝
🌺格言:༺永做优质༒programmer༻
📣题目
【问题描述】
求两个不超过200位的正整数相减的差。
【输入数据】
有两行,第1行是被减数a,第2行是减数b。数据a和b是不超过200位的正整数。
【输出要求】
一行,即相减后的结果。
CODE
#include #define MAXN 205using namespace std;int a[MAXN],b[MAXN],c[MAXN];string s_1,s_2;int main(){cin>>s_1>>s_2;int n_1,n_2,flag=0;/*标注正(0),反(1)问题*/n_1=s_1.length();n_2=s_2.length();if(n_2>n_1) flag=1;else{if(n_1==n_2 && s_2>s_1) flag=1;}if(flag==0){for(int i=0;i<n_1;++i) a[n_1-i-1]=s_1[i]-'0';for(int i=0;i<n_2;++i) b[n_2-i-1]=s_2[i]-'0';}else{cout<<"-"; swap(n_1,n_2);//保证n_1是长的 n_2是短的 for(int i=0;i<n_1;++i) a[n_1-i-1]=s_2[i]-'0';for(int i=0;i<n_2;++i) b[n_2-i-1]=s_1[i]-'0';}//a-bfor(int i=0;i<n_1;++i){c[i]+=a[i]-b[i];if(c[i]<0){c[i+1]--;c[i]+=10;} }//去掉前导零 输出flag=0;for(int i=n_1;i>=0;--i){if(c[i]==0 && flag==0) continue;cout<<c[i];flag=1;}if(flag==0) cout<<0;return 0;}