题目大意是根据年份,求出是2的m次方,求满足n!<2^m的最大的n。简单的数学题。关键在于用对数来约简比较,因为精度要求不大。
#include <iostream>
#include <math.h>
using namespace std;
int bit(int year)
{
return (int)pow(2, (year - 1940) /10 );
}
int main()
{
int year, chip_bits;
while (cin >> year && year)
{
chip_bits = bit(year);
double sum = 0;
int i = 0;
while (sum < chip_bits)
{
i ++;
sum += log(i) / log(2);//借助取对数来储存比较数字的相对大小
}
cout << i - 1 << endl;
}
return 0;
}