嘻嘻,最喜欢这种题啦。
给你年代,求得最大的n,使得n的阶乘在那个年代的整型范围内。
1960是4-bit的。每十年位数增长一倍。
直接从1开始往上*=2,k从1开始,如果大于k,/= k ,k++,继续这样下去。。。就OK了。。1A,嘻嘻,zoj好几天没做了。。。
#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <limits.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int n,i;
while( ~scanf("%d",&n) && n )
{
int p = 1<<((n-1960)/10+2);
double sum = 1.0;
int k = 1;
for(i=1; i<=p; i++)
{
sum *= 2.0;
if( sum > k )
{
k++;
sum /= k;
}
}
printf("%d/n",k);
}
return 0;
}