CSES - Leirikisa 9.12.2021 - Results
Submission details
Task:Lukujono
Sender:motsgar
Submission time:2021-12-09 16:54:17 +0200
Language:C++ (C++17)
Status:READY
Result:50
Feedback
groupverdictscore
#1ACCEPTED16
#2ACCEPTED34
#30
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
#17--3details
#18--3details
#19--3details
#20--3details
#21--3details
#22--3details
#23--3details
#24--3details

Code

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const ll N = 1e8;
ll num[N];

ll gp(ll i, ll j, ll ij)
{
    ll cur = ij;
    if (j > i / 2) return i + 1;
    if (j > i / 3) return (i / 2) + 1;
    if (j > i / 4) return (i / 3) + 1;
    if (j > i / 5) return (i / 4) + 1;
    if (j > i / 6) return (i / 5) + 1;
    if (j > i / 7) return (i / 6) + 1;
    if (j > i / 8) return (i / 7) + 1;
    if (j > i / 9) return (i / 8) + 1;
    if (j > i / 10) return (i / 9) + 1;
    if (j > i / 11) return (i / 10) + 1;
    if (j > i / 12) return (i / 11) + 1;
    if (j > i / 13) return (i / 12) + 1;
    if (j > i / 14) return (i / 13) + 1;
    if (j > i / 15) return (i / 14) + 1;
    if (j > i / 16) return (i / 15) + 1;
    if (j > i / 17) return (i / 16) + 1;
    if (j > i / 18) return (i / 17) + 1;
    if (j > i / 19) return (i / 18) + 1;
    if (j > i / 20) return (i / 19) + 1;
    if (j > i / 21) return (i / 20) + 1;
    if (j > i / 22) return (i / 21) + 1;
    if (j > i / 23) return (i / 22) + 1;
    if (j > i / 24) return (i / 23) + 1;
    if (j > i / 25) return (i / 24) + 1;
    if (j > i / 26) return (i / 25) + 1;
    if (j > i / 27) return (i / 26) + 1;
    if (j > i / 28) return (i / 27) + 1;
    if (j > i / 29) return (i / 28) + 1;
    if (j > i / 30) return (i / 29) + 1;
    if (j > i / 31) return (i / 30) + 1;
    if (j > i / 32) return (i / 31) + 1;
    if (j > i / 33) return (i / 32) + 1;
    if (j > i / 34) return (i / 33) + 1;
    if (j > i / 35) return (i / 34) + 1;
    if (j > i / 36) return (i / 35) + 1;
    if (j > i / 37) return (i / 36) + 1;
    if (j > i / 38) return (i / 37) + 1;
    if (j > i / 39) return (i / 38) + 1;
    if (j > i / 40) return (i / 39) + 1;
    if (j > i / 41) return (i / 40) + 1;
    if (j > i / 42) return (i / 41) + 1;
    if (j > i / 43) return (i / 42) + 1;
    if (j > i / 44) return (i / 43) + 1;
    if (j > i / 45) return (i / 44) + 1;
    if (j > i / 46) return (i / 45) + 1;
    if (j > i / 47) return (i / 46) + 1;
    if (j > i / 48) return (i / 47) + 1;
    if (j > i / 49) return (i / 48) + 1;
 
    while(true)
    {
        j++;
        if (i/j < cur) break;
    }
    return j;
}

ll f(ll i)
{
    if (i == 1) return 1;
    if (num[i] != 0) return num[i];
    
    ll s = 0;
    ll j = 2;
    
    while (j <= i)
    {
        ll cur = i/j;
        ll sj = j;
        j = gp(i, j, cur);
        
        ll r = f(cur);
        num[cur] = r;
        s += r * (j - sj);
    }
    
    return s;
}

int main(int argc, char **argv)
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    ll i;
    cin >> i;
    if (i == 0)
    {
        cout << "0\n";
        return 0;
    }

    cout << f(i) << "\n";
}

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:

input
74323456

correct output
8975396101231

user output
(empty)

Test 18

Group: 3

Verdict:

input
92132055

correct output
13006378374515

user output
(empty)

Test 19

Group: 3

Verdict:

input
55135704

correct output
5354656932672

user output
(empty)

Test 20

Group: 3

Verdict:

input
98613338

correct output
14631125716007

user output
(empty)

Test 21

Group: 3

Verdict:

input
75558302

correct output
9238208186405

user output
(empty)

Test 22

Group: 3

Verdict:

input
94968034

correct output
13713914468591

user output
(empty)

Test 23

Group: 3

Verdict:

input
52163652

correct output
4858985762438

user output
(empty)

Test 24

Group: 3

Verdict:

input
94830583

correct output
13674294022172

user output
(empty)