2007-02-19

【Q568】Just the Facts

題目: http://acm.uva.es/p/v5/568.html

說明:
  應該算簡單的一題,如果演算法是先算出階乘後才取出最小非0項,應該會發現數直到某一大小後,答案就是錯的,那是因為階乘的成長速度很快,而題目又要求可以接受10000階乘,即便用long long型態都不夠放,因此最直覺想法是不可行的!

程式下載: http://yaushung.googlepages.com/2007021902.c

程式內容:

#include <stdio.h>

int main() {
int input, count ;
long int temp ;
while(scanf("%d", &input)!=EOF) {
temp = 1 ;
for(count=1 ; count<=input ; count++) {
temp = temp * count ;
if((temp%10)==0)
temp /= 10 ;
temp %= 100000 ;
}
while((temp%10)==0)
temp /= 10 ;
printf("%5d -> %d\n", input, temp%10) ;
}
return 0 ;
}

1 則留言:

BSTN 提到...

感謝分享 受教了!