作者zodiace (GP500)
看板C_and_CPP
標題[ACM ] 424
時間Fri Aug 7 09:27:14 2009
這一題小弟試了很久 嘗試過很多資測
不過還是找不到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
1F:→ bleed1979:將b的index改為103 從102開始往回找就可以了 08/07 09:58
2F:→ zodiace:不是很了解耶~@~@~ 08/07 10:17
3F:→ bleed1979:請收信, mail改過的碼給你 08/07 10:18
4F:→ zodiace:謝謝 我了解了3Q 08/07 10:22