【poj2661】Factstone Benchmark(斯特林公式)
2024-10-10 16:31:59
题意:
给出\(x,x\leq 12\),求最大的\(n\),满足\(n!\leq 2^{2^x}\)。
思路:
通过斯特林公式:
\[n!\approx \sqrt{2\pi n}\cdot (\frac{n}{e})^n
\]
\]
我们一般可以认为这两个相等= =
将阶乘转化为一个比较好求的式子,然后二分判断一下即可。
/*
* Author: heyuhhh
* Created Time: 2019/12/10 21:14:22
*/
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#include <set>
#include <map>
#include <queue>
#include <iomanip>
#define MP make_pair
#define fi first
#define se second
#define sz(x) (int)(x).size()
#define all(x) (x).begin(), (x).end()
#define INF 0x3f3f3f3f
#define Local
#ifdef Local
#define dbg(args...) do { cout << #args << " -> "; err(args); } while (0)
void err() { std::cout << '\n'; }
template<typename T, typename...Args>
void err(T a, Args...args) { std::cout << a << ' '; err(args...); }
#else
#define dbg(...)
#endif
void pt() {std::cout << '\n'; }
template<typename T, typename...Args>
void pt(T a, Args...args) {std::cout << a << ' '; pt(args...); }
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
//head
const int N = 1e5 + 5;
int n;
bool chk(double x) {
return 0.5 * log(2 * 3.1415926 * x) + x * log(x) - x <= pow(2, n) * log(2);
}
void run(){
if(n == 0) return;
n = (n - 1940) / 10 * 10 / 10;
double l = 1, r = 1000000000000000, mid;
for(int i = 0; i < 1000; i++) {
mid = (l + r) / 2;
if(chk(mid)) l = mid;
else r = mid;
}
cout << (ll)l << '\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cout << fixed << setprecision(20);
while(cin >> n) run();
return 0;
}
最新文章
- Vuforia结合Skyshop: Image-Based Lighting Tools &; Shaders插件实现真实的光照效果
- Highchart.js
- JavaScript数组模拟栈和队列
- u3d单词学习plane
- ubuntu 安装zabbix_agent端
- 1.js基础
- 常见MFC UI界面库[转]
- 【制作镜像Win*】环境准备
- 树莓派(jessie)制作服务并开机启动
- dedecms由子目录访问修改为根目录访问
- Disassembly3:variable
- Android获取手机屏幕宽高
- ThinkPHP框架的增删改
- 用vlc搭建简单流媒体服务器(UDP和TCP方式)
- 00_Linux介绍_我的Linux之路
- 使用spring-session共享springmvc项目的session
- Python 反射机制之hasattr()、getattr()、setattr() 、delattr()函数
- CentOS7.4 ISCSI
- 对象及变量的并发访问(同步方法、同步代码块、对class进行加锁、线程死锁)&;内部类的基本用法
- 【easyui】关于easyui Datagrid一些样式记录