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
题目分析:大体上就是先输入一个整数N,然后分别再输入N个整数,分别判断每一个整数的阶乘有多少位,比如输入10,10!=3628800,这个数一共有7位,因此输出7;

当然,这道题目肯定不能直接求出数的阶乘再判断位数,这样会溢出的,下面我用了两种方法来求,都实现了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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 分解师耐久度0了怎么办 有鼻涕擤不出来怎么办 擤鼻涕耳朵堵了怎么办 脸用什么都过敏怎么办 1岁宝宝流清鼻涕怎么办 2岁宝宝流清鼻涕怎么办 3岁儿童流清鼻涕怎么办 鼻子老是流清水鼻涕怎么办 5岁儿童感冒鼻塞怎么办 3岁宝宝感冒鼻塞怎么办 宝宝9个月流鼻涕怎么办 鼻涕又黄又粘稠怎么办 鼻子一直流黄水怎么办 宝宝眼屎多又黄怎么办 宝宝痰多鼻涕多怎么办 小孩痰多鼻涕多怎么办 用qq登不了微博怎么办 中国银行u盾丢了怎么办 我的世界遇见him怎么办 考军校年龄超了怎么办 dnf组队就红电脑怎么办 九阳高压锅漏气怎么办 晋江买了防盗章怎么办 开车撞了人应该怎么办 开车撞了人没钱怎么办 驾照扣分12分后怎么办 车被交警拖走了怎么办 符石耐久没了怎么办 冒险岛2老是掉线怎么办 冒险岛老是掉线怎么办 冒险岛2延迟高怎么办 高速超速扣6分怎么办 优酷视频有密码怎么办 斗鱼直播很卡怎么办 鼠标的滑轮坏了怎么办 宝马1系烧机油怎么办 原房主不迁户口怎么办 做假账被发现了怎么办 裆部潮湿有异味怎么办 用了开塞露还是拉不出大便怎么办 安卓模拟器很卡怎么办