阶乘问题三部曲----(1、第一个阶乘位数大于10000的数. 2、9999阶乘位数. 3、任意数阶乘位数)
看到诸位大佬都有写博客的习惯后,这次下定决心要开始写博客了(之前写到一半放弃了),趁着参加蓝桥杯的机会,开始更关于算法的文章,希望可以有大佬前来交流。
这篇主要讨论关于阶乘的问题:
- 第一个阶乘位数大于10000的数。
- 9999阶乘位数(二进制位数)。
- 任意数阶乘位数(十进制)。
- N阶乘末尾0的个数。
这几个问题其实都差不多,从第一问开始:
1、第一个阶乘位数大于10000的数 ,题来自于计蒜客2019年蓝桥杯a组模拟赛第一题。
原题给了描述,大概就是第一个阶乘位数大于100000的数。
原问题链接:https://nanti.jisuanke.com/t/36099
先说关于对数的问题,c语言里log在头文件math中,其中log10()是以10为底,log()是以e
为底,如果想算log2()的话,需要使用换底公式。
补一张图:
//求第几个数的阶乘位数开始大于等于10000位.
#include <stdio.h>
#include <math.h>
int main() {
double x = 0;
for (int i = 1;; i++) {
x += log10(i)