大学生程序代写

/*  NYOJ69 阶乘数位长度





http://acm.nyist.net/JudgeOnline/problem.php?pid=69





数的长度

时间限制:3000 ms  |  内存限制:65535 KB 

难度:1

描述 

    N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?





输入 

首行输入n,表示有多少组测试数据(n<10)

随后n行每行输入一组测试数据 N( 0 < N < 1000000 ) 

输出 

对于每个数N,输出N!的(十进制)位数。 

样例输入 

3

1

3

32000样例输出 

1

1

130271

来源 

ACM教程 

上传者 

rooot

*  方法一:

*可设想n!的结果是不大于10的M次幂的数,即n!<=10^M(10的M次方),则不小于M的最小整数就是 n!的位数,对



 该式两边取对数,有 M =log10^n! 即:M = log10^1+log10^2+log10^3...+log10^n 循环求和,就能算得M值,



该M是n!的精确位数。当n比较大的时候,这种方法方法需要花费很多的时间。





方法二:



 利用斯特林(Stirling)公式的进行求解。下面是推导得到的公式:



  res=(long)( (log10(sqrt(4.0*acos(0.0)*n)) + n*(log10(n)-log10(exp(1.0)))) + 1 );



 当n=1的时候,上面的公式不适用,所以要单独处理n=1的情况!

.

 有关斯特林(Stirling)公式及其相关推导,这里就不进行详细描述,有兴趣的话可看这里。



这种方法速度很快就可以得到结果。详细证明如下:



  http://episte.math.ntu.edu.tw/articles/mm/mm_17_2_05/index.html

14.

*/





//c语言版

#include <stdio.h>

#include <math.h>

int main()

{

int n,cas,i;

double sum;

scanf("%d",&cas);

while (cas--)//n!≈√2πn { (n/e)^n }

{

scanf("%d",&n);

sum=1;

for(i=1;i<=n;i++) 

sum+=log10((double)i);

printf("%d\n",(int)sum);

}

return 0;

}





//C++版





/*

#include<iostream>

#include <cmath>

using namespace std;





int normal(double n){

double x=0;

   while(n){

   x +=log10(n);

    n--;

}

return (int)x+1;

}

 long stirling(double n){

long x=0;

    if( n ==1 )

      x = 1;

   else{  x = (long)( (log10(sqrt(4.0*acos(0.0)*n)) + n*(log10(n)-log10(exp(1.0)))) + 1 );

}

return x;

}

    int main()

{int n;

 cin>>n;//c++中输入一个数

      while(n--){ 

  int x;

        cin>>x;

     cout<<stirling(x)<<endl;//c++中输出一个数

 }

return 0;





}

*/

作者:chao1983210400 发表于2013-7-10 13:19:06 原文链接
阅读:6 评论:0 查看评论

[原]NYOJ-数的位数-69的更多相关文章

  1. java实现:将一个数各个位数相加

    前面已经实现过这个程序,现在我们就不多说了,直接更改C的源码,实现这个JAVA程序. import java.util.Scanner; public class HelloWorld { publi ...

  2. 利用C语言判别输入数的位数并正逆序输出

    利用C语言判别用户输入数的位数并正逆序输出 #include <stdio.h> void main() {        int i, scanfNum, printfNum, temp ...

  3. nyoj 69-数的长度 (log10(),计算数的位数)

    69-数的长度 内存限制:64MB 时间限制:3000ms 特判: No 通过数:10 提交数:13 难度:1 题目描述: N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)····· ...

  4. nyoj 96 n-1位数(处理前导 0 的情况)

    n-1位数 时间限制:3000 ms  |            内存限制:65535 KB 难度:1   描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则 ...

  5. nyoj 数的长度

    描述 N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?   输入 首行输入n,表示有多少组测试数据(n<1 ...

  6. NYOJ——————数的长度(斯特林公式的应用)

    数的长度 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出 ...

  7. nefu26(求数的位数)

    Description 根据密码学需要,要计算某些数的阶乘的位数. Input 第一行为整数n ,接下来 n 行, 每行1个数m (1 ≤ m ≤ 10^7) . Output 输出m的阶乘的位数. ...

  8. nyoj 96 n-1位数(处理前导 0 的情况)(string)

    n-1位数 时间限制:3000 ms  |            内存限制:65535 KB 难度:1   描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则 ...

  9. HDU 1018 阶乘数的位数

    题目大意: 将一个数开阶乘后得到的值,来求这个值的位数 n! = 1*2*3*4...*n 对于求一个数的位数的方法为ans = lg(n!) + 1 那么就可以看作 ans = lg(1) + lg ...

随机推荐

  1. Lumen开发:Lumen的异常处理机制

    版权声明:本文为博主原创文章,未经博主允许不得转载. Lumen的核心类Application引用了专门用于异常处理的RegistersExceptionHandlers, class Applica ...

  2. 让WebRTC支持H264编解码

    近期实验了下怎样让WebRTC支持H264编码.记录下,供有须要的人參考. 说明一下,我是在 Ubuntu Server 14.04 下编译的 WebRTC ,使用 native(C++) api 开 ...

  3. ULN2003A 使用,有坑

    8脚接24V负极 9脚接24V正极 16接24V继电器,再接到24V正极 1-7无论给5V 正 或 负,10-16都不能达到24V,越靠近输入端的输出端电压越大,最大的才11V,最小的2.5V 最后发 ...

  4. 利用tomcatserver配置https双向认证

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/luo201227/article/details/36897387 首先请保证已经安装好jdk,而且 ...

  5. jQuery 中的 Deferred 和 Promises(转)

    转自:http://www.css88.com/archives/4750/comment-page-1 看前首先了解:Promises/A规范,具体可以看这里,http://www.css88.co ...

  6. eclipse InvocationTargetException 错误解决

    1.今天做一个推送的,用到了几个jar包,直接以User Library的形式加进 在单元测试中,测试的很好,没有任何问题, 但是在action中测试,一测试就崩. 跟踪以后出现InvocationT ...

  7. python3 pillow使用测试

    # -*- encoding=utf-8 -*- ''''' pil处理图片,验证,处理 大小,格式 过滤 压缩,截图,转换 图片库最好用Pillow 还有一个测试图片img.jpg, 一个log图片 ...

  8. C# 串口调试助手源码

    本方法,禁用跨进程错误(做法不太好,但是对于单片机出身的人来说,好理解,能用就行). 基本功能: 1.点串口号的下拉菜单自动当前检索设备管理器的COM 2.发送模式可选,hex和string两种 3. ...

  9. P4045 [JSOI2009]密码

    题目 P4045 [JSOI2009]密码 做法 AC自动机+状压+爆搜 建AC自动机是显然的,顺便预处理\(lst_i\)表示\(i\)结点以哪些串结束(二进制) 然后跑状压\(dp[i][j][k ...

  10. react项目中antd组件库的使用需要注意的问题

    antd是蚂蚁金服推出的ui组件库,给我们在react项目开发中提供了大大的便利.但在使用的过程中,或多或少的会遇到一些问题,毕竟,用的是别人的东西,就得遵守别人的规则嘛!官方文档:https://a ...