using namespace std;
int m;
long long s[2000005];
int main(){
scanf("%d",&m);
for(int i=1;i<=m;++i){
s[i]=s[i-1]+i;
}
for(int i=1;i<=m;++i){
int j=lower_bound(s+1,s+1+m,s[i-1]+m)-s;
if(s[j]-s[i-1]!=m||j-i+1<2) continue;
else printf("%d %d\n",i,j);
}
return 0;
}
int j=lower_bound(s+1,s+1+m,s[i-1]+m)-s;
后面为什么要-s啊
蒟蒻诚心求助orz
题号:P1147