`

POJ 1423

 
阅读更多

问题描述:输入一个整数n(1,10^7),要你输出该整数的阶乘后的位数是多少?

     问题分析:由于n的输入数可能较大,倘若按照常规算法(就是算出n的阶乘)设计的话,一方面会出现TLE,另一方面会出现数据溢出的情况。所以我们不得不充分利用数学知识里面的对数与指数间的亲密关系。

 

但 是有没有办法不求这个阶乘,所以得用到stirling逼近    n!=(n/e)^n*sqrt(2nπ) n→∞     

不得不说这是个很牛叉的公式,在n=1时就有很高的精度,最多相差不过0.2 
       但问题是时间解决了,数据范围没有解决。。。。
       补充知识 :若n=a+10^b,(a<1,b∈N),则n的位数为b。所以要用到lg神器。。。。lgn=b+lg(a),所以说要求b只需求lgn+1(由于lga<0所以要+1)即可
      因而利用对数的运算法则把①式改写就可以了

上代码
#include <iostream>
#include <cmath>
using namespace std;
const double e=2.718281828459;
const double pi=3.141582626535;

double f(int n)
{
	return n*(log10(n)-log10(e))+0.5*(log10(2)+log10(n)+log10(pi));
}

int main()
{
	int t,m,s;
	cin>>t;
	while (t--)
	{
		cin>>m;
		s=(int)f(m)+1;
		cout<<s<<endl;
	}
	return 0;
}
 

分享到:
评论

相关推荐

    POJ 分类题目

    - poj1423 - **应用场景**:适用于图形属性计算。 **2. 叉积和点积** - **定义**:叉积和点积的应用,如线段相交判定、点到线段的距离等。 - **示例题目**: - poj2031 - poj1039 - **应用场景**:适用于几何...

    北大POJ部分题目答案(一些基础题目)

    很多的POJ题目答案!1000~1008,1011~1014,1016,1017,1019,1028,1032,1045,1046,1047,1050,1061,1067,1068,1088,1102,1159,1163,1183,1207,1218,1226,1247,1256,1258,1298,1316,1323,...

    POJ上三百多道题目程序源码

    6. "1423"对应第1423题。 7. "1182"对应第1182题。 8. "1321"对应第1321题。 9. "1547"对应第1547题。 10. "3224"对应第3224题。 每一道POJ题目通常会涉及特定的算法或编程挑战,例如数值计算、字符串处理、图论...

    POJ 100题代码

    2. 题目1423《Lucky Numbers》:此题涉及整数的位操作,要求找出数组中的幸运数字。理解题目条件并巧妙利用位操作,如异或、与、左移、右移等,是解决此类问题的关键。 3. 题目1182《Prime Number Game》:该题考察...

    POJ 300多题AC代码

    【压缩包子文件的文件名称列表】如1472、1331、2472、3632、2115、1045、2141、2983、1423、1182等,这些数字通常是POJ平台上各道题目的编号,代表了具体的编程问题。例如: 1472可能是关于数据结构(如二叉树或图...

    poj上算法题目分类

    - 1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 2377, 2380, 1318, 1877, 1928, 1971, 1974, 1990, 2001, 2002, 2092, 2379, 1002, 1007, 2159, 2231, 2371, 2388 **关键知识点:** - **...

    POJ部分题目代码,POJ部分题目代码

    【压缩包子文件的文件名称列表】中的每个名称(如:3259、1423、1159、2109、1146、1258、1656、3126、2243、1083)通常代表了POJ上的题目编号。每个编号对应的题目可能有不同的难度和主题,可能涉及到以下知识点: ...

    poj ac题目代码

    1000 1003 1004 1005 1006 1008 1012 1028 1036 1045 1046 1047 1087 1163 1183 1207 1218 1247 1269 1298 1306 1316 1326 1331 1338 1401 1423 1450 1455 1477 1488 1503 1504 1517 1519 1528 1543 1547 1552 1555 ...

    POJ上的ACM题目分类

    在POJ上,如1423、1694等题目涉及排序,有些还需要处理特殊字符或使用稳定排序算法。 2. **搜索、回溯、遍历**: - 搜索算法包括深度优先搜索(DFS)和广度优先搜索(BFS)。回溯是一种试探性解决问题的方法,如...

    acm poj 源代码

    1001 1002 1003 1004 1005 1006 1007 1008 1011 1012 1013 1014 1015 1017 ...1423 1426 1455 1458 1477 1543 1552 1562 1565 1579 1597 1604 1609 1631 1656 1657 1658 1661 1664 1665 1666 1674 1692 1717 1731 1742 ...

    poj pku 解题报告

    1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1011 1012 1013 1014 ...1423 1426 1455 1458 1459 1469 1477 1485 1511 1517 1519 1523 1552 1562 1564 1565 1573 1579 1651 1654 1655 1656 1658 1659 1663 1664 ...

    poj题目分类

    题目编号如1423、1723、1828等,这些题目主要考察基础的数学概念和公式运用,包括但不限于:数论、组合数学、几何学、代数学等。例如,数论中的质数判断、最大公约数、最小公倍数;组合数学中的排列组合;几何学中的...

    北大ACM 题目分类

    在POJ(Peking University Online Judge)平台上的题目分类中,涉及排序的题目多达几十道,如1423、1694等。这些题目不仅涵盖了基本的排序算法,如快速排序(如1002号题)、稳定排序(如1007号题),还包括了较为...

    北京大学acm题库 题目分类

    北京大学ACM题库分类是适合想做ACM题的人的题目分类,分类详细,涵盖了POJ(PKU ACM Online Judge)上的题目分类。该分类涵盖了多种算法和数据结构,包括排序、搜索、回溯、遍历、历法、枚举、数据结构的典型算法、...

Global site tag (gtag.js) - Google Analytics