#include<stdio.h> int main(){ long int a; long int j; long int count=0; long int sum=0; while(scanf("%ld",&a)==1){ for(j=5;j<=a;j*=5){ count=a/j; sum+=count; } printf("%ld\n",sum); count=0;sum=0; } return 0; }
-----------------------------------------
此題我只用到了幾次除法
但還是TLE
請問高手我的方法到底該如何改進呢?
重貼我的code沒有分行
--------------------------------------------
#include<stdio.h>
int main(){
long int a; long int j; long int count=0; long int sum=0;
while(scanf("%ld",&a)==1){
for(j=5;j<=a;j*=5){
count=a/j;
sum+=count;
}
printf("%ld\n",sum);
count=0;sum=0;
}
return 0;
}
#include int main(){ long int a; long int j; long int count=0; long int sum=0; while(scanf("%ld",&a)==1){ for(j=5;j<=a;j*=5){ count=a/j; sum+=count; } printf("%ld\n",sum); count=0;sum=0; } return 0; }
-----------------------------------------
此題我只用到了幾次除法
但還是TLE
請問高手我的方法到底該如何改進呢?
EX: 10! = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = ( 9 * 8 * 7 * 6 * 4 * 3 * 1) * 10 * 10
^ ^ ^
我的程式碼如下(連結為好讀版):
http://pastie.org/2241601
我的for loop作法也只是每5的次方做一次除法
想了好幾天還是不知道該怎麼解決TLE
請高手幫忙了!感激不盡!
痛苦太久...
我的程式碼如下(連結為好讀版):
http://pastie.org/2241601
我的for loop作法也只是每5的次方做一次除法
想了好幾天還是不知道該怎麼解決TLE
請高手幫忙了!感激不盡!
痛苦太久...
j會超過long int的範圍
要設成long long int