話說當初在hdu上看過這題,只是那時盲目自信的以為很容易實現,所以跳了過去。 昨晚上準備搞這個演算法,滿懷信心的敲完**,卻總是有這樣那樣的問題。 雖然還是能做出來,但給本人的打擊還是蠻大的。
下面我寫一下我的思路。
先以字串的方式輸入兩"數".字串的每個元素代表乙個數字上的數字。
把字串的每個元素轉化成相應的數字儲存在乙個陣列中。
再模擬加法運算。
例如: 輸入789 56
0 9 8 9
+ 0 5 6
___________________
1 0 4 5
最高位都賦為0是因為 可能兩數相加後會多乙個數字。
最後輸出的時候判斷一下最高位是否為零就可以了。
//下面就是模擬加法運算的演算法 for(i=len;i>=0;i--)
所以,如果有喜歡搞演算法的朋友,歡迎交流演算法。^_^
2012. 01. 09
今天重新做了一下這題。得出點經驗,一道題不能只是ac了就不管了,一道已經ac的題 重做一遍還是能發現 很多東西。下面是我今晚寫的**。相比於以前還是有點進步的。
#include#include#define max 1000 int main() printf("case %d:\n",count++); //控制格式 printf("%s + %s = ",a,b); //控制格式 for(j=max;j>=0;j--) if(sum[j]) break; //去掉高位多餘的0 for(i=j;i>0;i--) printf("%d",sum[i]); //控制格式 printf("\n"); if(t!=0) printf("\n"); } } return 0; }
2012. 02 .02
hdu1002 大數相加
對於超過int和ll的範圍整數進行運算,想到用字串來轉換 注意點 1 轉換時的順序和輸出的順序 2 進製的標記 3 從字元轉為數字,0的ascii值為48 所以要減去48 include include include using namespace std char a 1000 b 1000 儲...
大數 大數相加(hdu1002)
題目描述 acm入門的第一題,兩個超出整型變數範圍的整數進行相加運算。一 因為整型裝不下,所以需要通過字串來存放。二 加法運算是從個位 末端 開始,並且涉及到進製。include includechar a 1000 b 1000 int main d 1000 為了更好的檢視,我們重新申請兩個陣列...
hdu 1002大數加法
include includevoid daoxu int str,int n 定義乙個倒序陣列的函式,n為陣列中元素個數 void daoxu int str,int n else 找出最長數 for int i 0 i 0 j printf for maxline 0 maxline print...