當計算兩個較大的數的和時,可能c語言中的型別諸如int,long,long long型都無法表示時,此時應該換一種思維,將數看成是字串,採用字元陣列的方法進行儲存與運算。
同時,應該注意到字元陣列的儲存方式,在字元陣列中,低位位址存放的是字元陣列的高位,所以執行加法時,應該從陣列下標大的位址開始加。
以下題為例:
題目描述
calculate the result of a+b
程式輸入說明
line i: two integer a and b seperated by one space
multiple cases, end with eof
0<=a,b,(a+b)<=2
63-1
程式輸出說明
line i: (a+b)
the corresponding result of a+b
程式輸入樣例
可見格式
帶空格和換行符的格式
帶空格和換行符的格式說明
573247196999136902 11718740113834620592093017816426442939 1172643980007319715
2560745550527527105 3566574549894016800
程式輸出樣例
original
transformed
帶空格和換行符的格式說明
17451212083825989613265661796433762654
6127320100421543905
**如下:
其實本題用不到大數加法的知識,用%llu的格式就足以應對……
#include #include int main()
else flag=0;
c[k] = sum+'0'; //將結果轉換為字元儲存在c中
k++;
}while(i>=0) //當a或b某乙個計算結束時,用迴圈處理剩下的
else flag=0;
c[k] = sum+'0';
i--;
k++;
}while(j>=0)
else flag=0;
c[k] =sum+'0';
j--;
k++;
}if(flag) //如果最後還有進製,則將k變為1
c[k] = 1+'0';
else k--; //否則將k的值減1
for(;k>=0;k--)
printf("\n");
}return 0;
}
大數 加法 c語言
最近遇到乙個關於大數的問題頓時感覺好方,決定系統學一下大數。注意 關於大數問題,由於陣列不好界定輸入數的大小 陣列的長度 因此主要思想就是先用字串輸入儲存在字串陣列中,再逆序存入整形陣列進行最後逐位運算。剛開始通過部落格寫的 思路 輸入採用字元陣列儲存,然後將輸入存在整形陣列裡,然後逐位相加即可,同...
c 大數加法
在c 中,我們經常需要表示整數。但是,c 的基本資料型別中,最大的long也只能表示 9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之間的數。貨幣型別也不是無限大。如果我們需要表示更大的數,就需要用到一定的演算法來完成。這次,我和大家一起討...
C語言大數加法學習 複習
大數加法 為什麼c語言會有大數加法這個專門的概念?難道大數不是直接相加就行了嗎?其實是因為c語言中定義的整數型都是有位數限制的。比如int型的取值範圍為 2147483648 2147483647,即使是long long int的取值範圍也只是 922 3372 0368 5477 5808 92...