当前位置: 首页 > news >正文

HPU 1166: 阶乘问题(一)

1166: 阶乘问题(一) [数学]

时间限制: 1 Sec  内存限制: 128 MB

提交: 58  解决: 24  统计

题目描述

小H对阶乘!很感兴趣。现在他想知道N!N!的位数,由于NN太大了,所以请了你这个BestCoder来帮忙。

输入

第一行输入一个整数TT,代表有TT组测试数据。

每组数据输入一个整数NN

注:1<=T<=10,1<=N<=21061<=T<=10,1<=N<=2∗106

输出

对每组数据,输出N!N!的位数。

样例输入

2
100
1000

样例输出

158
2568

方法一:利用斯特林公式   n! \approx \sqrt{2\pi n}\, \left(\frac{n}{e}\right)^{n}.

#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
#define Pi acos(-1)
#define e exp(double(1))
using namespace std;
int main()
{
	int t,n,sum;
	cin>>t;
	while(t--)
	{
		cin>>n;
		sum=floor(log10(sqrt(2*Pi*n))+n*log10(n/e))+1;
		//floor()向下取整。即取不大于x的最大整数 
		if(n==1) sum=1;
		cout<<sum<<endl;
	}
	return 0;
}

方法二:无视公式,暴力

log10(n!)log10(n!) 
=log10(123n)=log10(1∗2∗3…∗n) 
=log10(1)+log10(2)++log10(n)

#include<cstdio>  
#include<cmath>  
int main()  
{  
    int n,i,t;  
    double d;  
    scanf("%d",&t);
    while(t--)
    {  
        scanf("%d",&n);  
        for(i=1,d=0;i<=n;i++) d+=log10(i);
        printf("%d\n",(int)d+1);
    }  
    return 0;
}  


转载于:https://www.cnblogs.com/Friends-A/p/9309028.html

相关文章:

  • Utilities之EXPIMP小结-续1
  • [原创]Zabbix3.4_API的python示例
  • VC程序异常中断的原因
  • POJ 2331 Water pipe IDA*
  • 软件问题
  • POJ 3460 Booksort IDA*
  • SpringCloud系列八:自定义Ribbon配置
  • 结构之法算法之道blog最新博文集锦第6期CHM文件0积分下载
  • BZOJ4318: OSU!
  • MSBuild使用初步
  • python库--pandas--写入文本文件
  • WPF程序编译(从命令行到Visual Studio)
  • Hibernate学习(1)- 初识
  • C#下.NET配置文件使用(一)
  • JS运行机制(进程与线程的区分)
  • [译]前端离线指南(上)
  • 【comparator, comparable】小总结
  • 0x05 Python数据分析,Anaconda八斩刀
  • 0基础学习移动端适配
  • 30秒的PHP代码片段(1)数组 - Array
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Docker容器管理
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Invalidate和postInvalidate的区别
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java深入 - 深入理解Java集合
  • jdbc就是这么简单
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Linux链接文件
  • Ruby 2.x 源代码分析:扩展 概述
  • - 概述 - 《设计模式(极简c++版)》
  • 简单实现一个textarea自适应高度
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 学习HTTP相关知识笔记
  • ​iOS实时查看App运行日志
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (分布式缓存)Redis持久化
  • (附源码)springboot教学评价 毕业设计 641310
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (利用IDEA+Maven)定制属于自己的jar包
  • (转)Linux下编译安装log4cxx
  • (轉)JSON.stringify 语法实例讲解
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET Core 项目指定SDK版本
  • .Net 垃圾回收机制原理(二)
  • .NET的数据绑定
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • :O)修改linux硬件时间
  • @JSONField或@JsonProperty注解使用