一.log函数

头文件:

#include <math.h>

使用

引入#include<cmath>

以e为底:log(exp(n))

以10为底:log10(n)

以m为底:log(n)/log(m)

重点:log()与log10()不是相同的函数
double log(double x);  /* 计算一个数字的自然对数 */
double log10(double x);  /* 计算以10为基数的对数 */

引申:

lg(1*2*3*4*5*...)=lg1+lg2+lg3+lg4+......;

若要计算sum的对数,假如是以10为底,而sum=1*2*3*4*5*...

则可以:lg(1*2*3*4*5*...)=lg1+lg2+lg3+lg4+......;

例题:poj 1423

数学解法:

#include<iostream>
#include<math.h>
using namespace std;
int num[];
int main()
{
int n;
cin>>n;
// lg(1*2*3*4*5*...)=lg1+lg2+lg3+lg4;
//其sum的位数是log10(sum)+1;
double t=;
for(int i=;i<=;i++)
{
t+=log10((double)i);
num[i]=(int)t+;//下标应为整型
}
while(n--)
{
int h;
cin>>h;
cout<<num[h]<<endl;
}
}

题目大意:求n的阶乘的位数,即n!的位数

sum=n!,其位数为log10(sum)+1;

相当于log10(1*2*3*4*5*...)=lg1+lg2+lg3+lg4+.....

double t=0;

for(int i=1;i<=n;i++)     //得到n的阶乘y      log10(x)所得的数有些是小数,定义为double

{

t+=log10((double)i);     //注意这里的log10(i)里面的i一定要加一个强制转换,与t的数据类型相同,否则会报错

y=(int)t+1;

}

注意小tips:

1.a[i],数组下标i应为int型,否则会出现compile error

2.y=log10(x),其中y与x的数据类型应相同,否则会出现compile error(错误信息:对重载函数的调用不明确)

二.斯特灵公式

斯特灵公式是一条用来取n阶乘近似值数学公式

一般来说,当n很大的时候,n阶乘的计算量十分大,所以斯特灵公式十分好用。即使在n很小的时候,斯特灵公式的取值也十分准确。

公式:n!约等于sqrt(2*pi*n)*[(n/e)^n]

n越大精确度越高,我们这只需求n!的位数,所以我们可以用该公式

ac代码:

#include<iostream>
#include<cmath>
using namespace std;
const double e=2.7182818284590452354,pi=3.141592653589793239;
double solve(int n)
{
return (log10(*pi*n))/2.0+n*(log10(n/e));//这里指数都化为乘积数
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
cout<<(int)solve(n)+<<endl;
} }

n阶乘,位数,log函数,斯特林公式的更多相关文章

  1. 【HDOJ1018】【大数阶乘位数】【斯特林公式】

    http://acm.hdu.edu.cn/showproblem.php?pid=1018 Big Number Time Limit: 2000/1000 MS (Java/Others)     ...

  2. HDU 1018(阶乘位数 数学)

    题意是求 n 的阶乘的位数. 直接求 n 的阶乘再求其位数是不行的,开始时思路很扯淡,想直接用一个数组存每个数阶乘的位数,用变量 tmp 去存 n 与 n - 1 的阶乘的最高位的数的乘积,那么 n ...

  3. FZU 2032 Log函数问题 模拟小数加法

    题目链接:Log函数问题 2 / 49 Problem G FZU 2032 Log函数问题 不知道为什么...比赛时高精度难倒了一票人...成功搞出大新闻... 试了一下直接double相加超时,然 ...

  4. math。h中的log函数的应用

    以10为底的log函数: 形式为 double  log10(double  x) 以e为底的log函数(即 ln)double log (double x) 如何表达log 以a为底b的对数: 用换 ...

  5. LeetCode 326 Power of Three(3的幂)(递归、Log函数)

    翻译 给定一个整型数,写一个函数决定它是否是3的幂(翻译可能不太合适-- 跟进: 你能否够不用不论什么循环或递归来完毕. 原文 Given an integer, write a function t ...

  6. matlab中log函数与rssi转距离

    我们通常所说的log是指以10为底的对数,而MATLAB中的log却不是这样.Matlab中的log函数在默认情况下是以e为底,即loge,如果需要计算以10为底的对数,那么需要用log10()函数. ...

  7. Java实现第九届蓝桥杯阶乘位数

    阶乘位数 题目描述 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是: ts id 表示在ts时刻编号id的帖子收到一个"赞&qu ...

  8. java实现第七届蓝桥杯阶乘位数

    阶乘位数 阶乘位数 9的阶乘等于:362880 它的二进制表示为:1011000100110000000 这个数字共有19位. 请你计算,9999 的阶乘的二进制表示一共有多少位? 注意:需要提交的是 ...

  9. java实现第四届蓝桥杯阶乘位数

    阶乘位数 题目描述 如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格 ...

随机推荐

  1. java Swing 练习

    import javax.swing.JFrame; public class Swingtest { static final int WIDTH = 500; static final int H ...

  2. Entity Framework Tutorial Basics(33):Spatial Data type support in Entity Framework 5.0

    Spatial Data type support in Entity Framework 5.0 MS SQL Server 2008 introduced two spatial data typ ...

  3. Entity Framework Tutorial Basics(26):Add Entity Graph

    Add Entity Graph using DbContext: Adding entity graph with all new entities is a simple task. We can ...

  4. C/C++中struct/union/class内存对齐

    struct/union/class内存对齐原则有四个: 1).数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储 ...

  5. java全栈day10--接口 多态

    接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义与 ...

  6. C++面试笔记--指针和引用

    面试一:指针与引用的区别? 答案: (1)非空区别.在任何情况下都不能使用指向空值的引用.因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针 ...

  7. 20169219《Linux内核原理与分析》课程总结

    第一周作业 这周主要学习l了linux基础入门这个课,还是很有用的.一周学完,前两个可能做起来比较慢,但是后面就快了,不要放弃希望,你可以的! 我就是没写到博客里面,哼哼,你就不要看了.自己总结吧,摊 ...

  8. [转]ORA-12516, TNS:listener could not find available handler with matching protocol stack

    转至:http://blog.csdn.net/MichaelSrc/article/details/6760247 1.查看当前连接进程数 SQL>select count(*) from v ...

  9. drools规则引擎笔记(二)

    规则引擎版本,drools6.5.0 final eclipse:Neon JDK1.8 今天主要是在规则的when部分加入了多个fact对象. 对于working memory存在多个fact的情形 ...

  10. 国内物联网平台(3):QQ物联智能硬件开放平台

    国内物联网平台(3)——QQ物联·智能硬件开放平台 马智 平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用 ...