70pts,求调
查看原帖
70pts,求调
766675
da_ke楼主2023/4/9 14:10
#include <bits/stdc++.h>

using namespace std;

int main(){
    int m;
    cin>>m;
    for(int a=1;a*2<=m;++a){
        int l=a,r=m;
        while(l+1<r){
            int mid=l+(r-l)/2;
            if(mid*mid+mid<=2*m+a*a-a)
                l=mid;
            else
                r=mid;
        }
        int b=l;
        if((a+b)*(b-a+1)==2*m)
            cout<<a<<' '<<b<<endl;
    }
}

公式就是

m=(a+b)(b−a+1)2m=\frac{(a+b)(b-a+1)}{2}, b2+b=2m+a2−ab^2+b=2m+a^2-a

2023/4/9 14:10
加载中...