#33025: 其實不需要迴圈


jasperlin0108@gmail.com (Jasper Lin)

學校 : 高雄市立高雄高級中學
編號 : 169403
來源 : [114.40.142.198]
最後登入時間 :
2023-10-05 16:52:06
a215. 明明愛數數 | From: [114.40.135.154] | 發表日期 : 2022-11-23 22:40

#include <bits/stdc++.h>

using namespace std;

int main()
{
    double n,m;
    int ans;
    ios::sync_with_stdio(false);
    cin.tie(0);
    while(cin>>n>>m){
        if(n>m){
            cout<<1<<"\n";
        }
        else if(n==m){
            cout<<2<<"\n";
        }
        else{
            ans=(((1-2*n)+sqrt((2*n-1)*(2*n-1)+8*m))/2);
            cout<<ans+1<<"\n";
        }
    }
    return 0;
}

 

一點點數學。

既然你知道(2n+(ans-1))*ans/2>m (等差級數和公式,d=1)

那麼稍微移向可以得到(ans)^2+(2n-1)*(ans)-2m>0

之後就是一元二次不等式,取最大的解+1 (因為要超過m,不能等於)

 
ZeroJudge Forum