絶滅

どうでもいい

yukicoder - No.648

No.648 お や す み

問題ページ




誤差やオーバーフローが怖いなら二分探索するという手もある.

#include "bits/stdc++.h"
using namespace std;


ll triangle(ll n) { return n * (n + 1) / 2; }

ll search(ll n) {
    ll l = 1, m, r = 2000000000;
    while (l <= r) {
        m = (l + r) / 2;
        ll x = triangle(m);
        if (x == n) return m;
        else if (x < n) l = m + 1;
        else r = m - 1;
    }
    return -1;
}

int main()
{
    ll n;
    cin >> n;

    ll ans = search(n);
    if (ans < 0) cout << "NO" << endl;
    else cout << "YES" << endl << ans << endl;

    return 0;
}