CSES - HIIT Open 2024 - Results
Submission details
Task:Equilateral numbers
Sender:Barren plateau
Submission time:2024-11-16 14:28:05 +0200
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.02 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.12 sdetails
#9ACCEPTED0.14 sdetails
#10ACCEPTED0.14 sdetails
#11ACCEPTED0.14 sdetails
#12ACCEPTED0.14 sdetails

Code

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

using Z = long long int;

int main() {
    cin.sync_with_stdio(false);
    cin.tie(nullptr);

    Z n;
    cin >> n;

    Z i = 1;
    Z best = 3;
    while(true) {
        Z x = i * (i + 1) / 2;
        if(x > n) {
            break;
        }

        if(x == n) {
            best = 1;
            break;
        } else {
            Z diff = n - x;

            Z A = 0;
            Z B = 2000000;
            while(A != B) {
                Z M = (A + B + 1) / 2;
                if(M * (M + 1) / 2 > diff) {
                    B = M - 1;
                } else {
                    A = M;
                }
            }
            if(diff == A * (A + 1) / 2) {
                best = 2;
            }
        }

        ++i;
    }
    cout << best << "\n";

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
1

correct output
1

user output
1

Test 2

Verdict: ACCEPTED

input
2

correct output
2

user output
2

Test 3

Verdict: ACCEPTED

input
3

correct output
1

user output
1

Test 4

Verdict: ACCEPTED

input
5

correct output
3

user output
3

Test 5

Verdict: ACCEPTED

input
33

correct output
3

user output
3

Test 6

Verdict: ACCEPTED

input
12385719843

correct output
3

user output
3

Test 7

Verdict: ACCEPTED

input
10935032

correct output
3

user output
3

Test 8

Verdict: ACCEPTED

input
659023495928

correct output
3

user output
3

Test 9

Verdict: ACCEPTED

input
913591235689

correct output
2

user output
2

Test 10

Verdict: ACCEPTED

input
999999911791

correct output
1

user output
1

Test 11

Verdict: ACCEPTED

input
1000000000000

correct output
2

user output
2

Test 12

Verdict: ACCEPTED

input
999999999998

correct output
3

user output
3