下载数据看了看,后面有几个点没打印出来,是太大了吗
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll m,a[2000001],flag;
inline ll er(ll l,ll r,ll x){
while(l<r){
ll mid=(r+l)/2;
if(x<=a[mid]) r=mid;
if(x>a[mid]) l=mid+1;
}
return l;
}
int main(){
a[1]=1;
cin>>m;
for(int i=2;i<=m;++i){
a[i]=a[i-1]+i;
if(a[i]>m&&!flag) flag=i;
}
for(int i=flag;i<=m;++i){
int x=a[i]-m;
int q=er(1,i,x);
if(a[i]-a[q]==m&&i!=q) cout<<q+1<<' '<<i<<endl;
}
return 0;
}