欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FOJ 1050 Number lengths

程序员文章站 2022-06-07 23:34:09
...

一,题目描述

FOJ 1050 Number lengths

FOJ 1050 Number lengths 

 

二,问题分析

1.题目意思为输入一个整数N 输入 N!的位数

2.很明显常规方法无法实现,当N很大时,N!的阶乘就无法表示出来

3.考虑数学方法 位数ans = log10(N!) =  ∑(1≤i≤n)log(i) ,取整后+1

FOJ 1050 Number lengths

三,代码解答

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

//公式:ans = log10(n!) =  ∑(1≤i≤n)log(i).

int main() {
	int n;
	while (cin >> n) {
		double res = 0;
		while (n) {
			res = res + log10((double)n);		
			n--;
		}
		cout << (int)res + 1 << endl;;
	}
	return 0;
}

注意:1.用log10()函数需要引入头文件#include<cmath>

2.根据函数声明,其参数要使用duoble类型FOJ 1050 Number lengths

相关标签: C++