阶乘位数 | 您所在的位置:网站首页 › 等于阶乘和的三位数c语言代码 › 阶乘位数 |
1. 问题描述:(这道题目是计蒜客2019 蓝桥杯省赛 A 组模拟赛) 蒜头君对阶乘产生了兴趣,他列出了前 1010 个正整数的阶乘以及对应位数的表: nnn!n!位数111221361424251203672037504048403205936288061036288007对于蒜头君来说,再往后就很难计算了。他试图寻找阶乘位数的规律,但是失败了。现在请你帮他计算出第一个正整数的阶乘位数大于等于 1000010000 的数是多少,即求最小的正整数 nn满足 n!n! 的位数大于等于 1000010000。 样例输入复制 无 样例输出复制 无
2. 对于结果位数为1000位的阶乘我们是不能够很轻松地计算出来的,所以使用常规的方法是求解不出来的,这个时候需要借助于数学上的一个小公式: log10(N)+1就是阶乘N的位数,然后使用循环来模拟这个过程就好了,还需要知道的是对数相加真数是相乘的数学知识,所以在循环中对数相加就可以了,这样就可以计算出N的阶乘了,然后取对数就可以了 此外Java中没有直接提供对于以10为底数的对数我们需要借助于数学上的换底公式进行转换 public static double log(int basement, int n){ return Math.log(n) / Math.log(basement); }3. 具体的代码如下: public class Main { public static void main(String[] args) { double ans = 0; int flag = 0; for(int i = 1; i |
CopyRight 2018-2019 实验室设备网 版权所有 |