上次已經寫好大數的階乘了
而我這次只將後面加上有幾個零的東西
不知道為什麼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;
}
請幫我解惑吧!謝謝
上次已經寫好大數的階乘了
而我這次只將後面加上有幾個零的東西
不知道為什麼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位夠嗎 ?
而且時間保證超時 : )