> 文档中心 > 高精度减法

高精度减法


📋 个人简介

🎉大家好,我是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;}

🌺朋友们,点赞是我更新的动力,明天再见,拜拜!!!

在这里插入图片描述