[ACM ] 424
這一題小弟試了很久 嘗試過很多資測
不過還是找不到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
08/07 09:58, 1F
→
08/07 10:17, , 2F
08/07 10:17, 2F
→
08/07 10:18, , 3F
08/07 10:18, 3F
→
08/07 10:22, , 4F
08/07 10:22, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章