求条(只有25分。
查看原帖
求条(只有25分。
1503208
convie楼主2025/6/18 20:05

来个大佬看看呀,为什么这串代码只有25分呀,我感觉和题解的区别不大呀

#include<iostream>
#include<cstring>
#include<algorithm>
#include<unordered_map>
using namespace std;
#define int long long
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MAXN 1000010
#define x first
#define y second
typedef pair<int,int> PII;
const int INF=1e9;
int a[MAXN];
int v[MAXN];
unordered_map<int,PII> mp;
signed main(){
	ios;
	int n=3;
	a[1]=1,a[2]=2;
	mp[1]={2,1};
	while(1){
		if(n&1)a[n]=2*a[n-1];
		else{
			for(int j=1;;j++)
			if(!mp.count(j)){
				a[n]=a[n-1]+j;
				break;
			}
		}
		for(int i=1;i<n;i++)
		mp[a[n]-a[i]]={n,i};
		if(n%2==0&&a[n]>INF)break;
		n++;
	}
	int cnt=0;
	for(auto it:mp)v[++cnt]=it.x;
	int q;
	cin>>q;
	while(q--){
		int b;
		cin>>b;
		if(mp.count(b)){
			cout<<mp[b].x<<" "<<mp[b].y<<endl;
		}else {
			int c=lower_bound(v+1,v+1+cnt,b)-v-1;
			cout<<n+(b-c)*2<<" "<<n+(b-c)*2-1<<endl;
		}
	}
	
	return 0;
}
2025/6/18 20:05
加载中...