hdu1018阶乘位数

n!的位数=log10(1)+...+log(n);

n!=sqrt(2*π*n)*(n/e)^n;

代码如下:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int m,n;
    cin>>m;
    for(int i=0;i<m;i++)
    {
        cin>>n;
        double sum=0.5*log10(2*3.1415927*n)+n*log10(n/2.718281828459);
        cout<<(int)sum+1<<endl;
    }
    return 0;
}



时间: 2024-12-22 18:10:52

hdu1018阶乘位数的相关文章

POJ 1423 大数阶乘位数

题意让求一个数m阶乘的位数,可以用sum(log10(1~n))+1打表,也可以用公式 #include <iostream> #include <math.h> using namespace std; const double e= 2.718281828459 ; const double pi= 3.1415926535898 ; int main() { long long n,tt; cin>>tt; while (tt>0) { tt--; cin&

1到10的阶乘计算

问题描述 代码,我已经写出了,我通过了4个变量实现功能.inti,t=1,n=0,m=1;for(i=1;i<10;i++){t=i;m=m*t;n=n+m;}Console.WriteLine(n);Console.ReadKey();请帮我改进下,有什么不好的请说一下 解决方案 解决方案二:用递归,代码简单明了解决方案三:你的t没任何意义啊,直接用i不就可以了?解决方案四:longJieCheng(intn){if(n==1)return1;elsereturnn*JieCheng(n-1)

大数阶乘所得数位数的定理

t=lnN!=NlnN-N+0.5*ln(2*PI*N) s=t/ln10+1       log为自然对数

“大整数阶乘”问题的递推算法

/* 标题:<<系统设计师>>应试编程实例-[递推算法程序设计] 作者:成晓旭 时间:2002年09月11日(11:52:00-16:26:00) 实现递推算法的大整数阶乘处理函数 时间:2002年09月16日(18:38:00-20:02:00) 实现"斐波那契数列"问题的递推算法函数 */ //:============================"大整数阶乘"问题的递推算法=========================== #d

题解:求满足条件n=a!+b!+c!的所有三位数n并输出

[题目]求满足条件n=a!+b!+c!的所有三位数n并输出,要求用自定义函数实现求阶乘. [本讲结构] (一)题目讲解视频 (二)相关习题 (三)此类题目的共有特征及典型算法 (四)视频中的代码 (五)部分相关习题的参考例程 [正文部分] (一)题目讲解视频 (二)相关习题(带*的在后面有参考例程) 若一个正整数n的所有小于n的因子之和等于n, 则称n为完全数, 如6=1+2+3是完全数.判断正整数n是否为完全数. 输出1000以内的所有完全数: 输入一个正整数,判断其是否为一个素数: 输出10

大数的阶乘算法

#include <stdio.h> #define MAX_LENGTH 20000 // 大数阶乘算法 int main() { int i, j, temp; int bitSize = 1; // 结果的位数 int result[MAX_LENGTH]; int n = 0; // 求n的阶乘 int carryBit = 0; scanf("%d", &n); result[0] = 1; for (i = 2; i <= n; i++) { ca

2014秋C++第11周项目4参考-特殊三位数

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.   [项目4-特殊三位数]请输出满足条件n=a!+b!+c!的所有三位数n,其中,a.b.c分别是n的百.十.个位数.要求用自定义函数实现求阶乘. int main() { } long fac(int n) //用于求n的阶乘 { } 参考解答: #include<iostream&g

阶乘 算法-网上找的c语言的求大数阶乘的答案 看不太懂这个算法 求大神解释算法

问题描述 网上找的c语言的求大数阶乘的答案 看不太懂这个算法 求大神解释算法 #include int main() { ??? int n; ??? int a[9000]; //确保保存最终运算结果的数组足够大 ???? int digit = 1; //位数 ???? int temp;?? //阶乘的任一元素与临时结果的某位的乘积结果 ???? int i, j, carry; //carry:进位 ???? printf("please in put n:n"); ??? s

2011蓝桥杯【初赛试题】神秘的三位数

神秘的三位数 有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身.即:abc = a! + b! + c! 下面的程序用于搜索这样的3位数.请补全缺失的代码. int JC[] = {1,1,2,6,24,120,720,5040,40320,362880}; //开了一个JC的数组用来存取1至9的阶乘,省去了下面的运算,节省了时间 int i; for(i=100; i<1000; i++) { int sum = 0; int x = i; while(x!=0)//补全的代码(把x的