[ACM ] 424

看板C_and_CPP (C/C++)作者 (GP500)時間16年前 (2009/08/07 09:27), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
這一題小弟試了很久 嘗試過很多資測 不過還是找不到bug 請各位大大幫看一下Q Q 題目: 在Turbo C中的整數資料型態(int)最大的正整數(unsigned int) 只能到65535,即使使用長整數(unsigned long)最大也只能到 4294967295。但是有時候這樣的整數仍然不夠大,我們需要一種 VeryLongInteger,他的長度為小於或等於 100個數字。 這個問題是要請你寫一個程式來作VeryLongInteger的加法。 輸入說明: 輸入的每一行代表一個VeryLongInteger(所有VeryLongInteger均為 正數)。 最後一行只包含一個0,代表輸入結束。 輸出說明: 輸出所有輸入的VerylongInteger之和。 範例輸入:help 若題目沒有特別說明,則應該以多測資的方式讀取,若不知如何讀取 請參考 a001 的範例程式。 123456789012345678901234567890 123456789012345678901234567890 123456789012345678901234567890 0 範例輸出 : 370370367037037036703703703670 CODE: #include <stdio.h> #include <string.h> int main() { char a[101]={'\0'},b[101]={0}; int i,j,k=0; while(gets(a)){ if(a[0]=='0') break; for(i=strlen(a)-1,j=0;i>=0;i--,j++) b[j]+=a[i]-48; for(i=0;i<=100;i++) if(b[i]>9){ b[i+1]+=b[i]/10; b[i]%=10; } } for(j=100;j>=0;j--) if(b[j]!=0) break; for(;j>=0;j--) printf("%d",b[j]); printf("\n"); return 0; } 我是用a陣列來存一開始的輸入 然後再全都"-48"換成int 存到b 接下來就是把大於9 的都拿去進位就這樣Q Q -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.130.225

08/07 09:58, , 1F
將b的index改為103 從102開始往回找就可以了
08/07 09:58, 1F

08/07 10:17, , 2F
不是很了解耶~@~@~
08/07 10:17, 2F

08/07 10:18, , 3F
請收信, mail改過的碼給你
08/07 10:18, 3F

08/07 10:22, , 4F
謝謝 我了解了3Q
08/07 10:22, 4F
文章代碼(AID): #1AUuBpXD (C_and_CPP)
文章代碼(AID): #1AUuBpXD (C_and_CPP)