傳送門
因為忘了帶書回家,所以因為這道題我卡了半小時所以寫篇部落格「紀念」下
高精度減法中,如果被減數比減數小,就要用減數減去被減數。接下來的判斷就是本題的核心。直接用strcmp是不行的,例如100與99,用strcmp就是99大,所以我們還要再看長度。這裡要特別注意一點,下面的**是不行的。
if(strcmp(s,k)>=0||lena>lenb)
所以判斷這裡我們就要分類討論兩次(第一次比較長度,第二次用strcmp)
**如下(原諒蒟蒻的一匹的我**長)
#include#include#include
using
namespace
std;
char s[10001],k[10001
];int a[10000001],b[100001],c[10000001
];void j(int,int,int
);void jf(int lena,int lenb,int
lenc)
c[lenc]=a[lenc]-b[lenc];
lenc++;
}while(c[lenc]==0)lenc--;
for(int i=lenc;i>=1;i--)
cout
<}
if(lena==lenb)
c[lenc]=a[lenc]-b[lenc];
lenc++;
}while(c[lenc]==0)lenc--;
for(int i=lenc;i>=1;i--)
cout
<}
else
j(lena,lenb,lenc);
}if(lenaj( lena, lenb, lenc);
}void j(int lena,int lenb,int
lenc)
c[lenc]=b[lenc]-a[lenc];
lenc++;
}while(c[lenc]==0)lenc--;
cout
<<"-"
;
for(int i=lenc;i>=1;i--)
cout
for(int i=0;i<=lenb-1;i++)
b[lenb-i]=k[i]-48
; lenc=1
;if(strcmp(s,k)!=0
)jf(lena,lenb,lenc);
else cout<<"0"
;}
P2142 高精度減法
高精度減法 輸入格式 兩個整數a,b 第二個可能比第乙個大 輸出格式 結果 是負數要輸出負號 輸入樣例 1 2 1 輸出樣例 1 1 20 資料a,b在long long範圍內 100 資料01 include2 include3 include4 include5 using namespace ...
高精度減法
題目描述 高精度減法 輸入輸出格式 輸入格式 兩個數 第二個可能比第乙個大 輸出格式 結果 是負數要輸出負號 輸入輸出樣例 輸入樣例 1 2 1 輸出樣例 1 1說明 這也沒什麼好說的,沒什麼特別的要求,就是乙個普普通通的高精減。程式如下 const max 500 var s integer a,...
高精度減法
description 輸入兩個整數a和b,輸出這兩個整數的差。a和b都不超過100位。input 輸入包括兩行,第一行為乙個非負整數a 被減數 第二行為乙個非負整數b 減數 兩個整數都不超過100位,兩數的最高位都不是0。output 輸出一行,表示a b的值。sample input 99999...