有時我們要進行精度較高的運算時,就要使用高精度來進行運算;
就如例題:
大整數加法
時間限制: 1000 ms 記憶體限制: 65536 kb
提交數: 21965 通過數: 6345
【題目描述】
求兩個不超過200位的非負整數的和。
【輸入】
有兩行,每行是乙個不超過200位的非負整數,可能有多餘的前導0。
【輸出】
一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。
【輸入樣例】
22222222222222222222
33333333333333333333
【輸出樣例】
55555555555555555555
兩個200位的非負整數!就算以long long型別來進行計算也會溢位!
建議:定義兩個int型別的陣列,數值的下標至少要200,然後用char型別的陣列來讀,讀了再把讀入的char陣列轉換成int型別,如下是**實現:
int i,j,lena,lenb,x;
int a[205],b[205],c[105];
char t[205],t1[205];
scanf("%s %s",t,t1);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(i=0;i切記!呼叫memset函式一定要加 #include
當然,你也可以加萬能標頭檔案#include
將陣列讀入處理後,就要計算,在此之前,要清空a陣列和b陣列;從末尾加起,每當a[i]+b[i]>9就要進製;如下是**實現:
lena=strlen(t);
lenb=strlen(t1);
i=1;
while((i<=lena) or (i<=lenb))
敲重點!!!不要忘記有前導0的存在!!!
下面是我個人常用的一種方法(蒟蒻一枚):
bool f=false;
for(i=n-1;i>=1;i--)
else if(f)printf("%d",c[i]);
} if(!f)printf("0");
printf("\n");
下面是完整的ac程式:
#include#include#includeusing namespace std;
const int n=205;
int main()
else if(f)printf("%d",c[i]);
} if(!f)printf("0");
printf("\n");
return 0;
}
python高精度加法 高精度加法
1.思路 其實就是模擬,加法是最簡單的,從個位開始加,價位加到前一位,然後再取10的餘數。for int i 1 i len i 計算和 c i a i b i 進製 c i 1 c i 10 取10的餘數 c i 10 2.實現 int len max a.length b.length 倒著存,...
高精度加法(c )
輸入兩個整數 a 和 b,輸出這兩個整數的和。a 和 b 都不超過 100 位。輸入包括兩行,第一行為乙個非負整數a,第二行為乙個非負整數b。兩個整數都不超過100位,兩數的最高位都不是0。輸出一行,表示a b的值。太極杯演算法大賽 因為是大整數,所以要準備好兩個陣列存兩個大整數。申請兩個整型陣列。...
高精度加法 高精度減法
雖然以前自己就學習過,但是自己打出來的 目測效率不高,也不夠精簡 因此學習一下eden裡面的這一題 big integer add subtract ifndef big integer define big integer include include using std string usin...