码迷,mamicode.com
首页 > 其他好文 > 详细

codechef Factorial 算法 fread读入数据

时间:2014-05-05 13:24:09      阅读:361      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!