#3815: 我用陣列儲存RE?


lhcomipanox (谷)

學校 : 國立臺灣師範大學附屬高級中學
編號 : 12009
來源 : [114.36.47.135]
最後登入時間 :
2011-09-17 08:14:11
d122. Oh! My Zero!! -- liouzhou_101 | From: [140.131.149.238] | 發表日期 : 2010-06-02 14:02

上次已經寫好大數的階乘了

而我這次只將後面加上有幾個零的東西

不知道為什麼RE了?

而我在Dev compile是完全沒有問題的!!

 

 

 

 

#include<stdio.h>
int main(){
 short a[200];
 int m=0, k ,i ,carry=0, p,o=0;
while(scanf("%d", &p)!=EOF){
 for(i=0;i<200;i++){a[i]=0;}
 a[m]=1;
 for(k=2;k<=p;k++){
  for(i=0;i<=m;i++){
   a[i] *= k;
   a[i] += carry;
   if((carry = a[i]/10)!=0&&i==m){m++;}
   a[i] %= 10; 
  } 
 }
 if (a[0]!=0)puts("0");
 else{
for(i=m;i>=0;i--){
 if(a[i]==0)o++;
}printf("%d\n", o);
}
m=0,carry=0, o=0;
}
return 0;
}

 

請幫我解惑吧!謝謝

 
#3816: Re:我用陣列儲存RE?


linishan (L)

學校 : 國立交通大學
編號 : 1090
來源 : [104.132.150.102]
最後登入時間 :
2019-05-10 19:57:54
d122. Oh! My Zero!! -- liouzhou_101 | From: [125.226.154.116] | 發表日期 : 2010-06-02 18:43

上次已經寫好大數的階乘了

而我這次只將後面加上有幾個零的東西

不知道為什麼RE了?

而我在Dev compile是完全沒有問題的!!

 

 

 

 

#include
int main(){
 short a[200];
 int m=0, k ,i ,carry=0, p,o=0;
while(scanf("%d", &p)!=EOF){
 for(i=0;i<200;i++){a[i]=0;}
 a[m]=1;
 for(k=2;k<=p;k++){
  for(i=0;i<=m;i++){
   a[i] *= k;
   a[i] += carry;
   if((carry = a[i]/10)!=0&&i==m){m++;}
   a[i] %= 10; 
  } 
 }
 if (a[0]!=0)puts("0");
 else{
for(i=m;i>=0;i--){
 if(a[i]==0)o++;
}printf("%d\n", o);
}
m=0,carry=0, o=0;
}
return 0;
}

 

請幫我解惑吧!謝謝


這題不是大數

long int 範圍內的數字

意思是可以到 2147483647階

在這樣的情況下 200位夠嗎 ?

而且時間保證超時 : )

 
ZeroJudge Forum