标签:blog class code int http 2014
和很多oj一样都有的经典题目,就是求阶乘的尾零有多少个。
这就不能直接求阶乘的值。而是直接求5的倍数的个数就可以了。
数据量很大,有100000个,所以这里使用buffer,调用fread函数,可以大大加速程序。比一般的读写操作快10倍左右呢。
原题:
http://www.codechef.com/problems/FCTRL
#include <stdio.h> unsigned facZeros(unsigned n) { unsigned ans = 0; for (unsigned i = 5; n / i; i *= 5) { ans += n / i; } return ans; } int Factorial() { unsigned T, c = 0, zeros = 0, num = 0; scanf("%u\n", &T); char buffer[100000]; while ((c = fread(buffer, 1, 100000, stdin)) > 0) { for (unsigned i = 0; i < c; i++) { if (buffer[i] == ‘\n‘) { printf("%u\n", facZeros(num)); num = 0; } else { num = num * 10 + buffer[i] - ‘0‘; } } } if (0 != num) printf("%u", facZeros(num)); return 0; }
codechef Factorial 算法 fread读入数据,布布扣,bubuko.com
codechef Factorial 算法 fread读入数据
标签:blog class code int http 2014
原文地址:http://blog.csdn.net/kenden23/article/details/24884407