首页 > 代码库 > HDU 1018 Big Number (数学题)
HDU 1018 Big Number (数学题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018
解题报告:输入一个n,求n!有多少位。
首先任意一个数 x 的位数 = (int)log10(x) + 1;
所以n!的位数 = (int)log10(1*2*3*.......n) + 1;
= (int)(log10(1) + log10(2) + log10(3) + ........ log10(n)) + 1;
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #include<cmath> 6 #include<queue> 7 using namespace std; 8 const int maxn = 100000+5; 9 double ans[maxn];10 11 double dabiao(int n)12 {13 double temp = 0;14 for(int i = 1;i <= n;++i)15 temp += log10((double)i);16 return temp;17 }18 int main()19 {20 int T,n;21 scanf("%d",&T);22 while(T--)23 {24 scanf("%d",&n);25 printf("%d\n",(int)dabiao(n) + 1);26 }27 return 0;28 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。