UVA - 10916 Factstone Benchmark

来源:互联网 发布:lims系统数据接口 编辑:程序博客网 时间:2024/06/05 16:07

题目大意:求计算计算机的进制所能表示的最多的n的阶乘

解题思路:2的n次方会溢出,两边同时取对数再计算,2^word = n!,取对数得,word = log(2)1 + ... + log(2)n,换底公式log(n)m = lg(m) / lg(n)


#include<cstdio>#include<cmath>int main() {int year;while(scanf("%d", &year) && year) {if(year == 0)break;year = year - 1960;year = (year - year % 10) / 10;int  word = 4;for(int i = 1; i <= year; i++)word = word * 2;int ans = 1;double temp = 0;while(1) {temp =  temp + log(ans) / log(2);if(temp >= word)break;elseans++;}printf("%d\n", ans - 1);}return 0;}


0 0
原创粉丝点击