为什么过不了呢?在本地测试上正常,提交只能就错误
查看原帖
为什么过不了呢?在本地测试上正常,提交只能就错误
1019606
KouMoSir楼主2023/10/10 14:32
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll N = 1e6 + 10, M = 1e12 + 10;
ll t, w, f[N], ind = 4, sum[N];
// 这是从他人那抄下来的函数
int ff(ll x) {
    if (x <= 3) {
        return 3;
    }
    if (x < 6) {
        return 4;
    }
    long long cnt = 6;
    int ans = 5;
    while (cnt < x) {
        cnt *= 2, ans++;
    }
    return ans - 1;
}
int main() {
	cin >> t;
	f[1] = 0, f[2] = 1, f[3] = 2, f[4] = 3;
	while (f[ind] < M)f[++ind] = f[ind - 1] * 2;
	for (int i = 1; i <= ind; i++)sum[i] = sum[i - 1] + f[i];
    for (int i = 3; i < 1e5; i++) {
        int ans = lower_bound(sum + 1, sum + ind + 1, i) - sum;
        int tmp = ff(i);
        // cout << "test:" << i << "ans1: " << ans << " ans2: " << tmp << '\n';
        if (ans != tmp)cout << "test" << i << "wrong !!!!" << '\n';
    }
	while (t--) {
		cin >> w;
		int ans = lower_bound(sum + 1, sum + ind + 1, w) - sum;
		cout << ans << '\n';
	}
}

我在本地测试了w为1到1e5内的答案,和别人的ac答案比对,并没有发现区别,但是在洛谷上提交就会输出"t"造成错误

2023/10/10 14:32
加载中...