題目鏈接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1169
【題目描述】
求兩個大的正整數相減的差。
【輸入】
共2行,第1行是被減數a,第2行是減數b(a > b)。每個大整數不超過200位,不會有多餘的前導零。
【輸出】
一行,即所求的差。
【輸入樣例】
9999999999999999999999999999999999999 9999999999999【輸出樣例】
9999999999999999999999990000000000000【來源】
易錯點:
在控制兩個數相減時,注意下標不要超時
代碼:
#include<iostream> using namespace std; int main() { string s1,s2; int a[200]={0},b[200]={0},sum[200]={0},i,j,sub=0,l=0; cin>>s1>>s2; for(i=0;i<s1.length();i++) a[i]=s1[i]-'0'; for(i=0;i<s2.length();i++) b[i]=s2[i]-'0'; for(i=s1.length()-1,j=s2.length()-1;i>=0;i--) { sum[l]=a[i]-b[j]-sub; if(sum[l]<0) { sum[l]+=10; sub=1; } else sub=0; l++; if(j>=0) j--; } int flag=0; for(i=l-1;i>=0;i--) { if(flag==0&&sum[i]==0) continue; else { cout<<sum[i]; flag=1; } } cout<<endl; return 0; }