QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#107349 | #6126. Sequence and Sequence | maspy | AC ✓ | 940ms | 13560kb | Python3 | 2.0kb | 2023-05-21 01:52:29 | 2023-05-21 01:52:31 |
Judging History
answer
from math import isqrt
K = 100000
C = [[0] * 100 for _ in range(100)]
C[0][0] = 1
for i in range(99):
for j in range(99):
C[i + 1][j] += C[i][j]
C[i + 1][j + 1] += C[i][j]
P = []
for x in range(K):
P += [x] * (x + 1)
if len(P) >= K:
break
Q = [0] * K
Q[1] = 1
for n in range(2, K):
Q[n] = Q[n - 1] + Q[P[n]]
def lagrange_interpolate_iota(f, x):
n = len(f)
f = f.copy()
a = [0] * n
for i in range(n):
a[i] = f[i]
for j in range(i, n):
f[j] -= a[i] * C[j][i]
comb = 1
res = 0
for i in range(n):
res += a[i] * comb
comb = comb * (x - i) // (1 + i)
return res
FF = []
FF.append([1])
AA = []
for i in range(5):
f = FF[i]
g = [0] + f
for i in range(1, len(g)):
g[i] += g[i - 1]
f = [lagrange_interpolate_iota(g, x * (x + 1) // 2)
for x in range(2 * len(g) - 1)]
FF.append(f)
for f in FF:
g = [0] + f
for i in range(1, len(g)):
g[i] += g[i - 1]
f = g
n = len(f)
a = [0] * n
for i in range(n):
a[i] = f[i]
for j in range(i, n):
f[j] -= a[i] * C[j][i]
AA.append(a)
def newton(idx, x):
a = AA[idx]
comb = 1
res = 0
for i, v in enumerate(a):
res += v * comb
comb = comb * (x - i) // (1 + i)
return res
def calc_sum(f_idx, n):
# sum_{i=0}^n f(i)Q(i)
f = FF[f_idx]
if n < len(f):
res = 0
for i in range(n + 1):
res += f[i] * Q[P[i]]
return res
ANS = 0
ANS += newton(f_idx, n + 1) * calc_Q(calc_P(n))
k = isqrt(8 * n + 1)
k = (k - 1) // 2
ANS -= calc_sum(f_idx + 1, k)
return ANS
def calc_P(n):
k = isqrt(8 * n + 1)
return (k - 1) // 2
def calc_Q(n):
if n < K:
return Q[n]
return calc_sum(0, n)
T = int(input())
for _ in range(T):
N = int(input())
print(calc_Q(N))
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 49ms
memory: 13508kb
input:
4 10 100 1000 987654321123456789
output:
30 2522 244274 235139898689017607381017686096176798
result:
ok 4 lines
Test #2:
score: 0
Accepted
time: 374ms
memory: 13388kb
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: 144ms
memory: 13560kb
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: 199ms
memory: 13444kb
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: 485ms
memory: 13396kb
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: 940ms
memory: 13432kb
input:
10000 260865660295317278841 5232352637620496342310336202478387251106 7108789244285764135987032973912918380 12766535319519586095540974948550152061 5138306300154916887884637635208203681949 7603163140266839847784708214115317398585 149590294591155205497765668766786424787 63283557694500045989299147454323...
output:
16323111740957704392106241109891718054228 6557703685144914472554701877112177422100848067214049191882271294010013621817762 12143115079716078114619105501427985631361994195400195527663921137836417758 39139456824156526604158618001888125076786817219954316014947704612553450312 6324051018379978443719363340...
result:
ok 10000 lines