HDU 1018 Big Number (阶乘位数)
题意:
给一个数n,返回该数的阶乘结果是一个多少位(十进制位)的整数。
思路:
用对数log来实现。
举个例子 一个三位数n 满足102 <= n < 103:
那么它的位数w 满足 w = lg103 = 3。 因此只要求lgn 向下取整 +1就是位数。然后因为阶乘比如5阶乘的话是5 * 4 * 3 * 2 * 1。位数就满足lg 5 * 4 * 3 * 2 * 1 = lg5 + lg4 + lg3 + lg2 + lg1。用加法就不会超过数字上限。
当然这是十进制下得。如果是m进制下 ,就把lgn 换成logm(n)就可以了。 logm(n)的表示方法是 lgn / lgm。高中数学的知识。。 这里有个double向下取整精度的问题要注意。转换成int时候,要floor(算出来的位数 + 1e-7) + 1.
最后得出位数的计算方式为:floor( logm(n) + logm(n - 1) + ...+ logm(1) + 1e-9 ) + 1.
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N=1e-;
int a; int second() //总位数
{
double tmp=0.0;
for(int i=; i<=a; i++) tmp+=log10(i);
return floor(tmp+N)+;
}
int main()
{
//freopen("input.txt", "r", stdin);
int t;
cin>>t;
while(t--)
{
scanf("%d",&a);
printf("%d\n",second());
}
return ;
}
AC代码
HDU 1018 Big Number (阶乘位数)的更多相关文章
- HDU 1018 Big Number
LINK:HDU 1018 题意:求n!的位数~ 由于n!最后得到的数是十进制,故对于一个十进制数,求其位数可以对该数取其10的对数,最后再加1~ 易知:n!=n*(n-1)*(n-2)*...... ...
- HDU 1018 Big Number (log函数求数的位数)
Problem Description In many applications very large integers numbers are required. Some of these app ...
- HDU 1018 Big Number (数学题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018 解题报告:输入一个n,求n!有多少位. 首先任意一个数 x 的位数 = (int)log10(x ...
- hdu 1018:Big Number(水题)
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- HDU 1018 Big Number【斯特林公式/log10 / N!】
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- HDU 1018 Big Number 斯特林公式
Big Number 题意:算n!的位数. 题解:对于一个数来算位数我们一般都是用while去进行计算,但是n!这个数太大了,我们做不到先算出来在去用while算位数. while(a){ cnt++ ...
- hdu 1018 Big Number (数学题)
Problem Description Inmany applications very large integers numbers are required. Some of theseappli ...
- hdu 1018 Big Number 数学结论
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- HDU 1018 Big Number 数学题解
Problem Description In many applications very large integers numbers are required. Some of these app ...
随机推荐
- C#中的Delegate
谈C#中的Delegate http://www.cnblogs.com/hyddd/archive/2009/07/26/1531538.html
- ExtJs布局之border
<!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...
- ring0 与 ring3 层之间的交互
在进行Windows的ring0层开发时,必不可免的要与 ring3 层进行交互.进行数据间的相互传输.可用的方法有DeviceIoCntrol,ReadFile.我平常都是用的DeviceIoCon ...
- Axis学习的第一天
下载axis的相关工程包: 选中这2个文件下载: 1)axis-bin-1.4.zip 含有axis工程包,将工程包复制到tomcat里的webapps目录下: 2)axis-src-1.4.zip ...
- TCP网络拥塞控制
拥塞控制过程 数据吞吐量 TCP窗口大小,窗口流量控制,慢启动对TCP的成块数据传输综合作用,可能对TCP的数据传输有意想不到的影响. RTT(Round-Trip Time) :往返时间.是指一个报 ...
- 6 tips for recovering from a flop
6 tips for recovering from a flop职场没有失败:6招走出工作失误阴影"We all make mistakes, if we're going to lear ...
- iOS开发--单例模式
单例模式在iOS开发中可能算是最常用的模式之一了,但是由于oc本身的语言特性,想要写一个正确的单例模式相对来说比较麻烦,这里我就抛砖引玉来聊一聊iOS中单例模式的设计思路.关于单例模式更多的介绍请参考 ...
- Delphi是座宝山,有待挖掘
Delphi是座宝山,有待挖掘1. VCL源码是座宝山,把纷繁复杂的Windows编程封装到短短几个类里,不超过8000行代码,还额外包括许多其它的技巧2. RTL是座宝山,方便程序员使用底层运算,不 ...
- CSS3:empty
:empty ---空的元素样式 <!DOCTYPE html> <html> <head lang="en"> <meta charse ...
- CentOS如何开启ssh远程连接
假设VPS采用centos,再假设用较新版本6.5. VPS上可能没有安装桌面,但一般来说都会安装ssh,并且防火墙默认开放22端口. 那就从ssh开始. # 安装ssh,默认已安装好 # yum i ...