首页 > 代码库 > 计算一个大数n的阶乘的位数宽度(十进制)转载
计算一个大数n的阶乘的位数宽度(十进制)转载
输入:
每行输入1个正整数n, (0<n<1000 000)
输出:
对于每个n,输出n!的(十进制)位数。
分析:
这道题采用蛮力法。根据定义,直接求解!
所谓n!的十进制位数,就是 log(n)+1, 根据数学公式有:n!=1*2*3*.....*n;
lg(n!)=lg(2)+......lg(n);
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | //输入一个数字n,请你计算该数的阶乘的十进制数的位数宽度 //比如:3!=6, 则宽度为1 //样例数据: //n=3 输出1 //n=32000 输出130271 //n=1000000 输出5565709 #include <string> #include <iostream> #include <iomanip> #include <stdio.h> #include <cmath> using namespace std; int main() { long int n; long int i; double sum; while ( scanf ( "%ld" , &n)!=EOF) { sum=0.0; for (i=2; i<=n; i++) { sum+= log10 (i); } printf ( "%ld\n" , ( int )sum+1 ); } return 0; } |
分类: 数论, 头脑+逻辑+思维
计算一个大数n的阶乘的位数宽度(十进制)转载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。