POJ-2661(不断优化)

/*==========================================================*\
| 求2^k>=n!,两边同时log10,打表简化
\*==========================================================*/

int main()
{
	int i, j, k;
	ll y = 2;
	int d[5000];
	j = 1;
	double sum = 0;
	k = 1;
	for (i = 1960; i <= 2160; i += 10) {
		y *= 2;
		double x = y;
		x *= log10(2.0);
		for (; ; ++j) {//优化
			for (; k <= j; ++k)//优化
				sum += log10(k * 1.0);
			if (sum > x)
				break;
		}
		d[i / 10] = j - 1;
		//printf("%d %d\n", i, j - 1);
	}
	int n;
	while (cin>>n, n) {
		cout<<d[n / 10]<<endl;
	}
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值