有大佬能看看为什么会编译失败吗?呜呜
查看原帖
有大佬能看看为什么会编译失败吗?呜呜
607732
Sincerely_sunshine楼主2023/10/18 10:24
#include<cstdio>
#include<map>
#define int long long
using namespace std;
map<int,pair<signed,signed> >m;
signed gcd(signed a,signed b){
	if(b==0) return a;
	return gcd(b,a%b);
}
inline int read(){
	int x=0;
	char ch=getchar();
	while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
	return x;
}
void init(){
	for(signed i=1;i<=1000000;++i){
		int tmp=1ll*i*(i+1);
		for(signed j=i+2;;j++){
			tmp/=gcd(tmp,j);
			if(tmp*j>1e18) break;
			tmp*=j;
			if(!m.count(tmp)) m[tmp]=make_pair(i,j);
		}
	}
	return ;
}
void pl(int q){
	int l=1,r=1e9;
	while(l<=r){
		int mid=(l+r)>>1;
		int h=mid*(mid+1);
		if(h==q){
			m[q]=make_pair(mid,mid+1);
			return ;
		}else if(h>q) r=mid-1;
		else l=mid+1;
	}
}
signed z;
int w;
signed main(){
	init();
	z=read();
	for(int i=1;i<=z;++i){
		w=read();
		if(m.count(w)){
			printf("%d %d\n",m[w].first,m[w].second);
			continue;
		}
		pl(w);
		if(m.count(w)){
			printf("%d %d\n",m[w].first,m[w].second);
			continue;
		}
		printf("NIE\n");
	}
	return 0;
}
2023/10/18 10:24
加载中...