poj2661(Stirling公式)
2018-01-20 20:42
316 查看
Factstone Benchmark
Description
Amtel has announced that it will release a 128-bit computer chip by 2010, a 256-bit computer by 2020, and so on, continuing its strategy of doubling the word-size every ten years. (Amtel released a 64-bit computer in 2000, a 32-bit computer in 1990, a 16-bit
computer in 1980, an 8-bit computer in 1970, and a 4-bit computer, its first, in 1960.)
Amtel will use a new benchmark - the Factstone - to advertise the vastly improved capacity of its new chips. The Factstone rating is defined to be the largest integer n such that n! can be represented as an unsigned integer in a computer word.
Given a year 1960 <= y <= 2160, what will be the Factstone rating of Amtel's most recently released chip?
Input
There are several test cases. For each test case, there is one line of input containing y. A line containing 0 follows the last test case.
Output
For each test case, output a line giving the Factstone rating.
Sample Input
Sample Output
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 4699 | Accepted: 2240 |
Amtel has announced that it will release a 128-bit computer chip by 2010, a 256-bit computer by 2020, and so on, continuing its strategy of doubling the word-size every ten years. (Amtel released a 64-bit computer in 2000, a 32-bit computer in 1990, a 16-bit
computer in 1980, an 8-bit computer in 1970, and a 4-bit computer, its first, in 1960.)
Amtel will use a new benchmark - the Factstone - to advertise the vastly improved capacity of its new chips. The Factstone rating is defined to be the largest integer n such that n! can be represented as an unsigned integer in a computer word.
Given a year 1960 <= y <= 2160, what will be the Factstone rating of Amtel's most recently released chip?
Input
There are several test cases. For each test case, there is one line of input containing y. A line containing 0 follows the last test case.
Output
For each test case, output a line giving the Factstone rating.
Sample Input
1960 1981 0
Sample Output
3 8
/* 思路:通过换算找到y年的位数,即为pow(2,N),这样能表达的最大数即为2^pow(2,N), 化成对数形式为pow(2,N)*log(2.0) 此外,利用Stirling公式n!≈sqrt(2*pi*n)*[(n/e)^n] 化成对数形式lnN!=NlnN-N+0.5ln(2N*pi) 计算出每个数N的对应N!的对数大小 预先计算出2016年的那个对数形式大小为多少,保证最大的N对应N!对数大小大于那个数就好了 */ #include<iostream> #include<stdio.h> #include<string.h> #include<math.h> using namespace std; #define pi 3.1415926 #define maxn 270005 double lnN[maxn]; void init() { lnN[1]=0; for(int i=2;i<maxn;i++) { lnN[i]=i*log(1.0*i)-i+0.5*log(2.0*i*pi); } } int main() { init(); int y; double N,lnN1; while(~scanf("%d",&y)&&y) { N=(double)((y-1940)/10); lnN1=pow(2,N)*log(2.0); for(int i=2;i<maxn;i++) { if(lnN[i]>lnN1) { printf("%d\n",i-1); break; } } } }
相关文章推荐
- POJ 2661 Factstone Benchmark 斯特林(stirling公式)应用
- POJ 2661 Factstone Benchmark 斯特林(stirling公式)应用
- poj--2661 Factstone Benchmark
- POJ 2661 预处理
- POJ 2661
- poj 2661 Factstone Benchmark (Stirling数)
- POJ 2661-Factstone Benchmark(log()的应用)
- POJ 2661 Factstone Benchmark (log2的故事)
- poj 1423 stirling公式(阶乘的位数)
- POJ-2661-Factstone Benchmark
- POJ1423 - Big Number(Stirling公式)
- zoj 1526||poj 1423 big number (大数 stirling公式)
- poj-2661-Factstone Benchmark
- POJ 2661 Factstone Benchmark
- POJ-1423 计算出n的阶乘的位数大数问题[Stirling公式]
- POJ 2661 Factstone Benchmark (斯特灵公式)
- poj 2661 Factstone Benchmark 取对数
- POJ 2661 Factstone Benchmark 数学题
- poj 2661(关于对数log的应用)
- POJ 2661 Factstone Benchmark 求最大阶乘的位数