阶乘位数 您所在的位置:网站首页 等于阶乘和的三位数c语言代码 阶乘位数

阶乘位数

2024-07-16 16:44| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有