QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#91085#6126. Sequence and Sequencehos_lyricAC ✓2277ms77956kbPython32.1kb2023-03-27 06:54:252023-03-27 06:54:39

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-03-27 06:54:39]
  • 评测
  • 测评结果:AC
  • 用时:2277ms
  • 内存:77956kb
  • [2023-03-27 06:54:25]
  • 提交

answer

from math import *

def Sum(n):
    return n * (n + 1) // 2

def P(n):
    if (n <= 0):
        return 0
    a = (isqrt(8 * n + 9) - 1) // 2 - 1
    while True:
        b = n - (Sum(a) - 1)
        if (1 <= a and 1 <= b and b <= a+1):
            return a
        a += 1

M = 3 * 10**5
qs = [0 for i in range(M + 1)]
rs = [0 for i in range(M + 1)]
ss = [0 for i in range(M + 1)]
ts = [0 for i in range(M + 1)]
qs[1] = 1
for i in range(2, M + 1):
    qs[i] = qs[i - 1] + qs[P(i)]
for i in range(1, M + 1):
    rs[i] = rs[i - 1] + (1 + i) * qs[i]
    ss[i] = ss[i - 1] + ((1 + i) * (-24 + 14*i + 19*i**2 + 12*i**3 + 3*i**4) // -24) * qs[i]
    ts[i] = ts[i - 1] + ((1 + i) * (107520 - 73344*i - 99136*i**2 - 52904*i**3 + 18324*i**4 + 58690*i**5 + 63635*i**6 + 47320*i**7 + 25025*i**8 + 9450*i**9 + 2485*i**10 + 420*i**11 + 35*i**12) // 107520) * qs[i]

def T(n):
    if (n <= 0):
        return 0
    # print("T", n)
    if (n <= M):
        return ts[n]
    raise Exception

def S(n):
    if (n <= 0):
        return 0
    if (n <= M):
        return ss[n]
    a = P(n)
    u = Sum(a) - 1
    b = n - u
    # print("S", n, a, b)
    return T(a - 1) + (n*(3+n)*(-2+3*n+n**2)*(8+3*n+n**2)//-48) * R(a - 1) + (b * (1+b) * (-1024 + 30*b**5 + 280*u + 2170*u**2 + 1785*u**3 + 700*u**4 + 105*u**5 + 25*b**4 * (10 + 7*u) + 2*b**3 * (407 + 595*u + 210*u**2) + b**2 * (1286 + 2975*u + 2205*u**2 + 525*u**3) + b * (324 + 3220*u + 3815*u**2 + 1925*u**3 + 350*u**4)) // -1680) * Q(a)

def R(n):
    if (n <= 0):
        return 0
    if (n <= M):
        return rs[n]
    a = P(n)
    u = Sum(a) - 1
    b = n - u
    # print("R", n, a, b)
    return S(a - 1) + (n*(3+n)//2) * R(a - 1) + (b*(1+b)*(4+2*b+3*u)//6) * Q(a)

def Q(n):
    if (n <= 0):
        return 0
    if (n <= M):
        return qs[n]
    a = P(n)
    u = Sum(a) - 1
    b = n - u
    # print("Q", n, a, b)
    return R(a - 1) + b * Q(a)

# for n in range(22):
    # print(n, P(n), Q(n), R(n))

numCases = int(input())
for caseId in range(numCases):
    N = int(input())
    print(Q(N))

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1983ms
memory: 77940kb

input:

4
10
100
1000
987654321123456789

output:

30
2522
244274
235139898689017607381017686096176798

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 2099ms
memory: 77900kb

input:

10000
613939207402503646
408978283345333197
976677512231308716
629053280913850466
148712339
236220313279945487
590396556995977994
9226
215693877607285701
649702683896705
343173887453826567
847003949499596615
867133040287550291
159928123569892354
864534948175618654
209739383170746721
4295456752378791...

output:

91030728117067063595428375419346402
40469246710473908695676971059074376
229951682342450470520349294486964970
95558039501640054006660579352994194
5418340556433412
13536357243714243974772906966693552
84197207203086091733385317631619504
20934656
11291075621624104092841708040651034
104019777231815308683...

result:

ok 10000 lines

Test #3:

score: 0
Accepted
time: 2037ms
memory: 77892kb

input:

1000
6403632579734162001008235137760132245297
1307698664787972023762442022139627469666
668870338048562416595095770565441759482
5092270
8806864498496723812760785099973409980711
2178464116010775202899984038946879469187
204381824371
8638495456004772442511643693521120926431
45954412333082528168092594892...

output:

9822905445826021159291522774438593145331066315784567505849706373529921001845336
409552844852728078841401625660602682494169687360338453221088647649526339235330
107160056181509722327918304399871120167096186888511567354513496578559803370274
6354453295964
185817323129718525790559571287806776421589155460...

result:

ok 1000 lines

Test #4:

score: 0
Accepted
time: 2036ms
memory: 77884kb

input:

2000
2587627816607030340103003175959756184662
7728753705064569253253827797978613582938
6507847628603052973674714721
6989857636824717968431061258300652290539
4734281027640913533293237760425416005062
9411123735455625690768098631226366597446
8309753930995253536640660321476246470149
63565157427098067709...

output:

1603610451790269237852635641930301658193367441164307312552842461667027137613454
14309943493171496191506053530749878345271155973702143153225815632926701434642842
10414697803791950572309383355053080338229465674803757518
11704102206894264239190418551798088411458157423624785417336589284698838535371266
5...

result:

ok 2000 lines

Test #5:

score: 0
Accepted
time: 2176ms
memory: 77952kb

input:

5000
6701025283447923273597553918313900029215
1618190467906965189844764312914748628527
2135261797018456059451326428589353332126
8027429917075086154217136768450383650445
8263301530632040969183919589286944799002
376886964626613356031779878
1191561726595055348898524031899625958102
453561433135467095374...

output:

10756647971303093856509780939435968749671842310025383400207261624750784751725876
627115945498078452730193858129037650151913122482133071938783012929533045529940
1091921493223233296724616654299408127388059493196845968361252389122720100379070
154375707400033063668088306493199269136326791073281723548116...

result:

ok 5000 lines

Test #6:

score: 0
Accepted
time: 2277ms
memory: 77956kb

input:

10000
260865660295317278841
5232352637620496342310336202478387251106
7108789244285764135987032973912918380
12766535319519586095540974948550152061
5138306300154916887884637635208203681949
7603163140266839847784708214115317398585
149590294591155205497765668766786424787
63283557694500045989299147454323...

output:

16323111740957704392106241109891718054228
6557703685144914472554701877112177422100848067214049191882271294010013621817762
12143115079716078114619105501427985631361994195400195527663921137836417758
39139456824156526604158618001888125076786817219954316014947704612553450312
6324051018379978443719363340...

result:

ok 10000 lines