最后一个点TLE求助qwq
查看原帖
最后一个点TLE求助qwq
933256
Hayashi_LinZe楼主2023/6/24 09:30

思路是先打表打出所有是1的数的位置 然后输入每个数之后用二分暴力查找它是不是在这个表里

#include<iostream>
using namespace std;
typedef long long ll;
const int M = 1e9;
ll save[44722];
int bin_s(int k){
	int l = 1, r = 44721;
	int mid;
	while(l <= r){
		mid = (l + r) / 2;
		if(save[mid] == k){
			return mid;
		}
		if(save[mid] < k){
			l = mid + 1;
		}
		else{
			r = mid - 1; 
		} 
	}
	return -1;
}
int main() {
	ll p = 1;
	ll add = 1;
	ll pos = 1;
	while(p <= M) {
		save[pos] = p;
		p += add;
		add ++;
		pos ++;
	}
	int t;
	cin >> t;
	while(t --) {
		int x;
		cin >> x;
		if(bin_s(x) == -1) cout << "0" << endl;
		else cout << "1" << endl;
	}
	return 0;
}

也许本地打出来表可以节省一点时间 但是语句太长了没法提交qwq 总之请大佬们救救我这个废物qwq

2023/6/24 09:30
加载中...