本文主要是介绍uva 10916 Factstone Benchmark,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:给你一个年份y,1960<=y<=2160,从1960年的4位整数开始,每10年位数都会乘以2,要你输出一个数n,使得n!能被当前的位数表示出来。
取对数。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
const int N=30;
int a[N];
int main()
{int cnt=1,num=0,k=4;double sum=0;for(int i=0;i<25;i++,k*=2){while(sum<k*log10(2.)){cnt++;sum+=log10(cnt);}sum-=log10(cnt);a[i]=(--cnt);}int n;while(scanf("%d",&n)!=EOF){if(n==0) break;printf("%d\n",a[(n-1960)/10]);}return 0;
}
这篇关于uva 10916 Factstone Benchmark的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!