CSES - Leirikisa 9.12.2021 - Results
Submission details
Task:Lukujono
Sender:Mahtimursu
Submission time:2021-12-09 14:29:47 +0200
Language:C++ (C++17)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED16
#2ACCEPTED34
#3ACCEPTED50
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1details
#2ACCEPTED0.01 s1details
#3ACCEPTED0.01 s1details
#4ACCEPTED0.01 s1details
#5ACCEPTED0.01 s1details
#6ACCEPTED0.01 s1details
#7ACCEPTED0.01 s1details
#8ACCEPTED0.01 s1details
#9ACCEPTED0.01 s2details
#10ACCEPTED0.01 s2details
#11ACCEPTED0.01 s2details
#12ACCEPTED0.01 s2details
#13ACCEPTED0.01 s2details
#14ACCEPTED0.01 s2details
#15ACCEPTED0.01 s2details
#16ACCEPTED0.01 s2details
#17ACCEPTED0.59 s3details
#18ACCEPTED0.70 s3details
#19ACCEPTED0.46 s3details
#20ACCEPTED0.74 s3details
#21ACCEPTED0.60 s3details
#22ACCEPTED0.72 s3details
#23ACCEPTED0.44 s3details
#24ACCEPTED0.71 s3details

Code

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;

#define M 1000000007

map<int, ll> u;

ll ans(int n) {
    if (u[n] != 0) return u[n];
    ll s = 0;
    for (int j = 2; j <= n / 2; ++j) {
        ll val = n / j;
        /*ll lst = j;
        for (ll k = n; k >= 1; k /= 2) {
            while (val == n / (lst + k)) lst += k;
        }*/
        ll lst = n / val;
        s += ans(val) * (lst - j + 1);
        j = lst;
    }
    s += n - n / 2;
    u[n] = s;
    return s;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    ll n;
    cin >> n;

    u[0] = 0;
    u[1] = 1;

    cout << ans(n) << "\n"; 

    return 0;
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
542

correct output
11942

user output
11942

Test 2

Group: 1

Verdict: ACCEPTED

input
929

correct output
29913

user output
29913

Test 3

Group: 1

Verdict: ACCEPTED

input
801

correct output
23460

user output
23460

Test 4

Group: 1

Verdict: ACCEPTED

input
935

correct output
30006

user output
30006

Test 5

Group: 1

Verdict: ACCEPTED

input
998

correct output
33766

user output
33766

Test 6

Group: 1

Verdict: ACCEPTED

input
942

correct output
30490

user output
30490

Test 7

Group: 1

Verdict: ACCEPTED

input
736

correct output
20285

user output
20285

Test 8

Group: 1

Verdict: ACCEPTED

input
930

correct output
29975

user output
29975

Test 9

Group: 2

Verdict: ACCEPTED

input
95404

correct output
90172356

user output
90172356

Test 10

Group: 2

Verdict: ACCEPTED

input
98060

correct output
94687572

user output
94687572

Test 11

Group: 2

Verdict: ACCEPTED

input
69495

correct output
52308390

user output
52308390

Test 12

Group: 2

Verdict: ACCEPTED

input
92197

correct output
85306979

user output
85306979

Test 13

Group: 2

Verdict: ACCEPTED

input
53418

correct output
32957881

user output
32957881

Test 14

Group: 2

Verdict: ACCEPTED

input
97377

correct output
93859995

user output
93859995

Test 15

Group: 2

Verdict: ACCEPTED

input
68065

correct output
50223001

user output
50223001

Test 16

Group: 2

Verdict: ACCEPTED

input
95463

correct output
90201672

user output
90201672

Test 17

Group: 3

Verdict: ACCEPTED

input
74323456

correct output
8975396101231

user output
8975396101231

Test 18

Group: 3

Verdict: ACCEPTED

input
92132055

correct output
13006378374515

user output
13006378374515

Test 19

Group: 3

Verdict: ACCEPTED

input
55135704

correct output
5354656932672

user output
5354656932672

Test 20

Group: 3

Verdict: ACCEPTED

input
98613338

correct output
14631125716007

user output
14631125716007

Test 21

Group: 3

Verdict: ACCEPTED

input
75558302

correct output
9238208186405

user output
9238208186405

Test 22

Group: 3

Verdict: ACCEPTED

input
94968034

correct output
13713914468591

user output
13713914468591

Test 23

Group: 3

Verdict: ACCEPTED

input
52163652

correct output
4858985762438

user output
4858985762438

Test 24

Group: 3

Verdict: ACCEPTED

input
94830583

correct output
13674294022172

user output
13674294022172