首页 > 代码库 > codechef Factorial 算法 fread读入数据
codechef Factorial 算法 fread读入数据
和很多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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。