codechef Factorial 算法 fread读入数据
2014-05-02 19:05
429 查看
和很多oj一样都有的经典题目,就是求阶乘的尾零有多少个。
这就不能直接求阶乘的值。而是直接求5的倍数的个数就可以了。
数据量很大,有100000个,所以这里使用buffer,调用fread函数,可以大大加速程序。比一般的读写操作快10倍左右呢。
原题:
http://www.codechef.com/problems/FCTRL
这就不能直接求阶乘的值。而是直接求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; }
相关文章推荐
- Apache Spark源码走读之5 -- DStream处理的容错性分析
- 如何通过Html网页调用本地安卓app
- Making the Grade(poj1527)
- Socket的正确关闭(改良版)
- 五月学习笔记
- 如何构建一个优秀的移动网站?谷歌教你25招
- 基于jquery的滚动鼠标放大缩小图片效果
- Shells作为cronjobs运行
- c语言中longjmp的个人心得
- 关于Qt窗口保持宽高比的研究
- HDU 2897巴什博弈变形
- Java加密解密与数字证书的操作
- android设计模式之模板方法模式
- SG函数 hdu 4664 Triangulation
- 向文件写入127个ASCLL码,这程序是什么回事不行
- nyoj VF函数
- 115个Java面试题和答案
- Bode Plot(poj1045)
- 分数拆分
- 数字证书常见格式与协议介绍