HDU 1018 Big Number
来源:互联网 发布:Java中logback使用 编辑:程序博客网 时间:2024/06/10 23:08
Big Number
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 34053 Accepted Submission(s): 16100
Problem Description
In many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you are given a number, you have to determine the number of digits in the factorial of the number.
Input
Input consists of several lines of integer numbers. The first line contains an integer n, which is the number of cases to be tested, followed by n lines, one integer 1 ≤ n ≤ 107 on each line.
Output
The output contains the number of digits in the factorial of the integers appearing in the input.
Sample Input
21020
Sample Output
719
当然,这道题目肯定不能直接求出数的阶乘再判断位数,这样会溢出的,下面我用了两种方法来求,都实现了AC,先介绍第一种:
采用斯特林公式求解:
(斯特林公式:lnN!=NlnN-N+0.5*ln(2*N*PI))求出位数即可,还是要注意一下输出格式哦!贴代码:
#include<iostream>#include<math.h>using namespace std;#define PI 3.1415926535int main(){ int T;//记录每一块 int result; //记录下结果 cin>>T; while(T--) { int n; double t; cin>>n; t=(n*log(n)-n+0.5*log(2*n*PI))/log(10); result=(int)t+1; cout<<result<<endl; } return 0; }
当然了,用这种方法求解的前提要先知道这个数学公式,老实说我也是百度之后才知道的,不知道的人拿到手肯定无法用这种方法来做了,那就用第二种方法,这种方法学过对数的童鞋都应该会吧0.0!
lnN!=lnN+ln(N-1)+ln(N-2)+ln(N-3)......+ln2+ln1;
用循环求得1~N的对数和lnN!,然后[lnN!],取对数和的上整数就可以了,这种方法也很简单。贴AC代码:
#include<iostream>#include<math.h>using namespace std;int main(){int T;//记录每一块cin>>T;while(T--){int n;double t=0.0;cin>>n;for(int i=1;i<=n;i++){t+=log(i)/log(10);} cout<<(int)t+1<<endl; } return 0; }
0 0
- hdu 1018 Big Number
- HDU 1018 Big Number
- HDU 1018 - Big Number
- hdu 1018 Big Number
- hdu 1018 Big Number
- HDU 1018 Big Number
- HDU 1018 Big Number
- HDU 1018 Big Number
- hdu 1018 Big Number
- hdu 1018 Big Number
- HDU 1018 Big Number
- hdu 1018 - Big Number
- HDU 1018 Big Number
- HDU 1018 Big Number
- HDU 1018 Big Number
- hdu 1018 Big Number
- hdu - 1018 - Big Number
- HDU 1018 Big Number
- C语言还可以这样用?
- 高度 && 角度 && 尺度
- Lowest Common Ancestor of a Binary Tree
- 用hector mapping构建地图rplidar
- ListView的焦点问题
- HDU 1018 Big Number
- angularjs 封装百度地图API(实现异步加载)
- Etcd操作简单介绍
- 安装Dubbo管理控制台
- 使用花生棒(内网穿透)服务远程控制交换机
- 学习笔记-volatile
- 东海南海自卫反击战
- 安卓初识基本控件_ToggleButton
- 生成学习算法