博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「UVA1185」Big Number 解题报告
阅读量:6081 次
发布时间:2019-06-20

本文共 1180 字,大约阅读时间需要 3 分钟。

In many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you are given a number, you have to determine the number of digits in the factorial of the number.

Input

Input consists of several lines of integer numbers. The first line contains an integer n, which is the number of cases to be tested, followed by n lines, one integer 1 ≤ n ≤ 107 on each line.

Output

The output contains the number of digits in the factorial of the integers appearing in the input.

Sample Input

21020

Sample Output

719

题意

求出\(n!\)有几位数。

思路

我们考虑用log解决。

\(log_{10}ab=log_{10}a+log_{10}b\)

因此\(log_{10}n!=log_{10}1+log_{10}2+……+log_{10}n\)

\(floor(log_{10}n!)+1\)即为\(n!\)的位数。

代码

#include
using namespace std;#define Re register#define MAXN 10000005#define LD long doubleint f[MAXN];LD c;int n, t;int main(){ for ( int i = 1; i <= 10000000; ++i ){ c += log10(i); f[i] = (int)floor(c) + 1; } scanf( "%d", &n ); while( n-- ){ scanf( "%d", &t ); printf( "%d\n", f[t] ); } return 0;}

转载于:https://www.cnblogs.com/louhancheng/p/10299313.html

你可能感兴趣的文章
2018 年最值得关注的 JavaScript 趋势
查看>>
什么是区块链?超级账本 Brian Behlendorf 从五个方面教你认识
查看>>
Linux中的帮助功能
查看>>
针对Android的Pegasus恶意软件版本和针对iOS的有什么不同?
查看>>
使用MindFusion JavaScript组件与WordPress Elementor插件
查看>>
Android设计应用图标不用愁---Asset Studio Integration来帮你 .
查看>>
Linux 下DNS配置管理
查看>>
收集的Haskell资源
查看>>
Hyper-V 2016 配置管理系列(Part3)
查看>>
IEEE模版写作干货
查看>>
Linux日志管理与分类
查看>>
使用Maven搭建SpringMVC项目
查看>>
Nginx学习之三:对应平台的Nginx下载和安装
查看>>
IPv4地址
查看>>
全局探色器
查看>>
shell入门1
查看>>
dialog
查看>>
Golang HTTP请求代理
查看>>
大麦网疑遭“脱裤” 600余万用户信息被售卖
查看>>
Hive Export和Import介绍及操作示例
查看>>