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

HDOJ-1018 Big Number

时间:2015-04-28 20:55:11      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.hdu.edu.cn/showproblem.php?pid=1018

题意:给出一个数n,输出n的阶乘的位数

汗Σ( ° △ °|||)︴
刚开始还准备上大数乘法 然而10000的阶乘结果就已经接近40000位
10^7的阶乘...

正:对于一个数n 求其位数可以用 log10(n) + 1 求得
所以 对于N! 其位数= log10(1*2*...*(N-1)*N) +1 = log10(1)+log10(2)+..+log10(N-1)+log10(N) + 1
【简单粗暴

# include <stdio.h>
# include <math.h>

int main()
{
	int t, num;
	scanf("%d", &t);
	while(t--)
	{
		scanf("%d", &num);
		double len = 0;
		for(int i = 1; i <= num; i++)
		{
			len += log10((double)i);
		}
		printf("%d\n",(int)len + 1);
	}

	return 0;
}

  

HDOJ-1018 Big Number

标签:

原文地址:http://www.cnblogs.com/linjiaman/p/4463894.html

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