A Floor Sum

Computer Science Level pending

Write a function that computes

S ( n , r ) = i = 1 n i r \displaystyle S(n,r) = \sum_{i=1}^{n} \left\lfloor i\sqrt{r} \right\rfloor

Submit S ( 1 0 100 , 2020 ) mod 1 0 14 S(10^{100}, 2020) \text{ mod } 10^{14}

Note that you don't need a really good computer to make this computation, it should take less than a second.


The answer is 38653388879862.

This section requires Javascript.
You are seeing this because something didn't load right. We suggest you, (a) try refreshing the page, (b) enabling javascript if it is disabled on your browser and, finally, (c) loading the non-javascript version of this page . We're sorry about the hassle.

1 solution

Julian Poon
Nov 14, 2020

The idea is to use Beatty Sequence to simplify computation. Given 1 r + 1 s = 1 \frac{1}{r} + \frac{1}{s}=1 , s i \lfloor s*i\rfloor and r i \lfloor r*i\rfloor partitions the set of positive integers, for positive integer i i . Hence we have:

S ( n , r ) = e ( e + 1 ) 2 S ( n , s ) , e = n r , n = e s S(n,r) = \frac{e(e+1)}{2} - S(n',s), e = \lfloor nr\rfloor, n' = \left\lfloor \frac{e}{s} \right\rfloor

Now if 1 < r < 2 1<r<2 , n n' will be pretty small relative to n n . Since S ( n , r + k ) = k n ( n + 1 ) 2 + S ( n , r ) S(n,r+k) = k\frac{n(n+1)}{2} + S(n,r) if k k is an integer, we can form the following recursion:

S ( n , r ) = r 0 n ( n + 1 ) 2 + S ( n , r 1 ) = r 0 n ( n + 1 ) 2 + e 1 ( e 1 + 1 ) 2 S ( n 1 , s 1 ) r 0 = r 1 , r 1 = r r 0 e 1 = n r 1 , n 1 = e 1 s 1 , s 1 = 1 1 1 r 1 \begin{aligned} S(n,r) &= r_0\frac{n(n+1)}{2} + S(n,r_1) \\ &= r_0\frac{n(n+1)}{2} + \frac{e_1(e_1+1)}{2} - S(n_1,s_1) \\ r_0 &= \lfloor r \rfloor-1, r_1 = r - r_0 \\ e_1 &= \lfloor nr_1\rfloor , n_1 = \left\lfloor \frac{e_1}{s_1} \right\rfloor , s_1 = 1 - \frac{1}{1-r_1} \end{aligned}

This ensures that n 1 n_1 is always significantly smaller than n n , and hence drastically speed up the computation of the recursion. For accuracy, this can be implemented in sympy. The implementation is below and it takes ~30s to solve.

But we can do way better. We can implement the symbolic calculations only with integers and no floats to preserve precision. We can also calculate rational approximations to r \sqrt{r} to the precision we need, store the result, and only calculate to higher precisions when we need to, and remove all recursions (Python has huge overhead in recursion). This results in a 4000x speedup, calculating the answer in only 0.0089s. The implementation is also below. Below I also calculate for larger n = 1 0 1000 n = 10^{1000} and n = 1 0 10000 n=10^{10000} . Do note I'm using python 3.8 here, which is required for math.comb .

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
######################
### Sympy Solution ###
######################

import sympy as sym
import time

def S_sym(n, r):

    if n==0: return 0

    r0 = sym.floor(r) - 1
    r1 = r - r0
    s1 = 1 - 1/(1-r1)
    e1 = sym.floor(n*r1)
    n1 = sym.floor(e1/s1)

    return r0*n*(n+1)/2 + e1*(e1+1)/2 - S_sym(n1, s1)

n,r = 10**100, 2020
t = time.time()
print(int(S_sym(n, sym.sqrt(r)))%10**14)
print(time.time()-t)

# 38653388879862
# 35.8780882358551 << Time taken

#####################################
### Very efficient implementation ###
#####################################

from math import *
import time

def frac_simplify(frac):
    a,b = frac
    g = gcd(a, b)
    a //= g; b //= g
    return a,b

def frac_add(frac1, frac2):
    a,b = frac1; c,d = frac2
    return a*d + c*b, d*b

def compute_sqrt(n, thres):

    '''Compute p/q ~ sqrt(n) with error < 1/thres'''

    if 'sqrt_cache' not in globals():
        global sqrt_cache
        sqrt_cache = None

    if not sqrt_cache:

        N = int(sqrt(n))
        if N*N == n: return N,1

        d0 = n-N*N
        d1 = n-(N+1)*(N+1)

        if d0 > abs(d1): d = d1; N += 1
        else: d = d0

        N2 = N*N
        end = N2//d

        p,q = 0,1
        i = 0
        d_pow, N_pow, f_pow, end_pow = 1, 1, 1, 1

    else:
        (p,q), (d_pow,N_pow,f_pow,end_pow), (N,N2,i,d,end) = sqrt_cache

    while True:

        if end_pow>thres:
            sqrt_cache = (p,q), (d_pow,N_pow,f_pow,end_pow), (N,N2,i,d,end)
            return frac_simplify((p*N,q))

        a = comb(2*i,i) * d_pow
        b = f_pow*(1-2*i) * N_pow
        p,q = frac_simplify(frac_add((p,q), (a,b)))

        d_pow *= -d
        N_pow *= N2
        f_pow *= 4
        end_pow *= end
        i += 1

def evaluate_floor_r(r, n):

    '''
    compute floor(n*r)
    r is the format ((a,b), (c,d), e), representing a/b + c/d*sqrt(e)
    '''

    (a,b), (c,d), e = r
    p,q = compute_sqrt(e, n*c*n)
    p,q = p*c,q*d

    return (n*(p*b + a*q))//(q*b)

def inv_r(r):

    '''
    compute r_new = 1/r
    r is the format ((a,b), (c,d), e), representing a/b + c/d*sqrt(e)
    '''

    (a,b), (c,d), e = r

    ad = a*d; bd = b*d; cb = c*b
    x = ad*bd
    y = bd*cb
    z = ad*ad - cb*cb*e

    a0,b0 = frac_simplify((x, z))
    c0,d0 = frac_simplify((y,-z))

    r_inv = ((a0,b0), (c0,d0), e)

    return r_inv

def f(r):

    '''
    Computes r_new = 1 - 1/(1-r)
    r and r0 is the format of ((a,b), (c,d), e), representing a/b + c/d*sqrt(e)
    '''

    (a,b), (c,d), e = r

    db = d*b; bc = b*c; bad = (b-a)*d
    x = bad*db
    y = db*bc
    z = bad*bad - bc*bc*e

    a0,b0 = frac_simplify((z-x, z))
    c0,d0 = frac_simplify((y,-z))

    return ((a0, b0), (c0, d0), e)

def S(n, r):

    '''
    Computes \sum_{i=1}^n floor(r*i)
    r is the format of ((a,b), (c,d), e), representing a/b + c/d*sqrt(e)
    '''

    total_sum = 0
    idx = 1

    while True:

        if n==0: break

        (a,b), (c,d), e = r

        # r0 = floor(r) - 1
        # r1 = r - r0
        # s1 = 1 - 1/(1-r1)
        # e1 = floor(n*r1)
        # n1 = floor(e1/s1)

        r0 = evaluate_floor_r(r,1) - 1
        r1 = ((a-r0*b, b), (c,d), e)
        s1 = f(r1)
        e1 = evaluate_floor_r(r1, n)
        n1 = evaluate_floor_r(inv_r(s1), e1)

        total_sum += (r0*n*(n+1)//2 + e1*(e1+1)//2)*idx
        idx *= -1

        n,r = n1,s1

    return total_sum

def solution(n, r):

    if 'sqrt_cache' in globals():
        global sqrt_cache
        del sqrt_cache

    return S(n,((0,1),(1,1),r))

n,r = 10**100, 2020
t = time.time()
print(solution(n, r) % 10**14)
print(time.time() - t)

# 38653388879862
# 0.008942127227783203 <-- Time taken

n,r = 10**1000, 2020
t = time.time()
print(solution(n, r))
print(time.time() - t)

# 2247220505424423186459814044549067942996196616015125639349691367432075664529111959801867066651236497854824070507252872015187461279608646640546527579642920723324078866229464049036944369436031988265230364337186436988234822020785916185169947801717358007323481809701411183664983080518339192630052564466924876658385550117456137806204817241193055861215718976144653515213321023373660738869346381975084659013438816367175439914859648053227563403808030000281583021909592727656436024695485207442441952097880026869806742333958334567905171247536636590312387635751260866996606053041260914439812349473289702423625541818707831734144522896870604531623823613288497545868011621256718992204150781943360737622483136860087781020770617816853849592017800622893861713867451202545859492176034873400242996158324061459397505912384141554163694554602764616094409661460806303421816141087672455809267723440924034362368347770628843094426150463067433766239995252384979821586002181068511803580695124164054455235831013423284430184541334026790458905673849027752417331733152881073168039847295979150332953097491542111203679559174367979450984603774227953339812197472602153889606504497167370582777526644079865948761536153067649249032977167928970640256475302341576171951344448904880723981844623971486443037698541831850581464964704727585402750515131688825271606472609304553733950614359672230988176182854202465178242515135759543773399877988731504225311653790086021058186609149256594159984666548420206920528801753982352348925324581355056739101936808474895686322120142569356222668706204287171710881250681606088260667053192270997643185316538150158305712532689139139378395048545872653028662671565842437217600143710656297660543301397107198032744469265795771302754075659971867739891116627211994587291354184991500511112309261557897954832657188316770303337605479489067326168671515882698009031623261357142643053454710407789706015168857586201515555311233642196623232027163981746295381195738530056080648702408878015214259102236935521993730976345009829789585
# 1.645200252532959 <-- Time taken

n,r = 10**10000, 2020
t = time.time()
print(solution(n, r))
print(time.time() - t)

# 2247220505424423186459814044549067942996196616015125639349691367432075664529111959801867066651236497854824070507252872015187461279608646640546527579642920723324078866229464049036944369436031988265230364337186436988234822020785916185169947801717358007323481809701411183664983080518339192630052564466924876658385550117456137806204817241193055861215718976144653515213321023373660738869346381975084659013438816367175439914859648053227563403808030000281583021909592727656436024695485207442441952097880026869806742333958334567905171247536636590312387635751260866996606053041260914439812349473289702423625541818707831734144522896870604531623823613288497545868011621256718992204150781943360737622483136860087781020770617816853849592017800622893861713867451202545859492176034873400242996158324061459397505912384141554163694554602764616094409661460806303421816141087672455809267723440924034362368347770628843094426150463067433766239995252384979821586002181068511803580695124164054455235831013423284430184541333807068408363231530381771012876826358581453506438334732044181196209889925089200007699372467702855801199121367177228052610678726474193024942449844409406290705194236193243002356632458630705645834150644892536921612776478859374093359725931910100552246043891623305472896580175333542529631045441722328956058027465850270259860858828684072009831308773550659090561717502681133075905149061872609135202369522830160343674936246094535093381286392916213356984638390118015961256036110379882800404580337159846951099249827800662290488663352052231469005047173048408135755163981945482956540961748289762695856346295787604123841749515724687088707988092710270667333821811255636055474471811435882582348965323344949719058460487693694240972390275012665959828827241040607842171099599042282907624969237258282122426511248566179064923450063119611865892209906441731862950992919175528534286209129481017361922765421349366738492426924199581576925283787357746770142697756371455862541851228519945701842696791411938892388647901991375658844557692057425848987593223950279743124442413117831580860246789592132149214709787418255106111219739575797702350117225001072108297943576673094358053865762444005167265119791314450503242018418165441356536805986252049036226426183903020347616629923323583693502187013024761836586755225221480688564062977913548767041134019863737646321191743380650515441709902051296937866826204534222762865901625122606432504122594163802459831155387727778997663545666711220841287028747989836650419478520712391257600096600050588064662935854477319980793864042191861344191610774483940725513373666582683213654931742178007089688332941186313792131736589951893599946736725606164170297150474455881219166102049908053588385475963098133211992551908388064907069475385950377250678065667454896958955430374435059726806394763386390582189341560455480787871777356560302894061691490538138934087966185207571342468828951707930371978334537599370523507346528517009257808567492981682296076830906222900784595839109823653956297712814263993183859660565957713756606324463125312279324028432595307487636497759414804667696937218445753790003568140782830416586686361530643973440447771334491218064508330031068781043452619013905182622323192722368475894673738727953770498053909202409060045027679909478876519688563598992197730464590292184578488805390165619643551686217714980750935126776242400002702674349267430592924476038251777524990274801167120043166689034851692969157144356275099589854008682404211210318224323320960654589781801467590629500912155730766401579736274054781913652252904999140891332458778361972358132513952883214704750070294723565490163493139663482282836247439297361148447220478734364874533030313572400199025203458914975349941281671996677178917651769729932190351720540622880739552557692672272586508266307573989662299494533753469684254836983030034304818339244891635423357281773928385878715876421249590733461561863284382985775691642288418935188085169106814253304321437097827576647872582431856562133541304098790624376523902903273293371676710319806645572843788385901651292717237355397799866644674226950044807269884557641784830872704202110483297070806152324952407985281592282301617635055255072929358361834167338089549140387495510632976333817630913296621013635389544420832809809463349567963299798460437772361786696274381676575144407829809139765048553624718920566578099720839658420328121091602019858765590243635473230272830449872026759603533163895802936196855207531903187604796429848806270759931789342328482711305566734933995508527881974280293754146518215334604631983474337712879999549694117275441598412465911966142035624742267913331300283315147390378030960224955321839560174998370776970027738064957854053637487403425046475711809137249882665499494921140083652098818967431115834094934328676903996405260307793722801491763360767071756988749327421548928561438437236509015534779450448690118402838393132445349718583075614327424360835475339631417540923953319974794681308908741385124628504753081735308604976808205040656906355286932457046909044249475445563598933572679281331552397504649891060389108482445727858187987589915197329977567535466329355647677358939174163449933460942978985021615284813684835860991510471221018936774834701345059942731684838806973781116333331539864473734628176808086648750230178520891116961116003304466818613992200612339748367607055277069907326621368192437420109982213696472653140083265296781983423766554884228514222349581998455489258606326471263978182267430294972037581413516555166428112512017216081208961818162083637101531006858089029096615972146918329565117716678472364700818917015620752268484869792828729646291584134836827767583703262598889791976295323102903379338477571002272039776766120662433106768706517908745528231025430717189557443065393218746619435249331404949986393134815900393343989869919678378532704368101860247139844365121356072059312128323789794868170941223744395497016946030687324915889118784245949939153624015807017695542662488317714615824150177534568262806169764673511344144504948774965000647459397729599251733909402774409580259933734311033313680675336090502188587155985796895909452172715284935559121662739668922018305344043442396975519576197441012232497740322929494928492905233582419167191042869318534121697678105436576659121059464054022853375850722741775537274024553401835519058312057524693973803844250727251164065846569714071228004280700698450629090600134466003762879486328805410362464452076275104414179967538644672585101930632874431420576292083559487908941105507702602264632947371595952443734399881626890461248383263024242657354206217194696072158056439481033441997721336055493670060023540493185755975791683066275206874099548381692213170244107611873864363873309078039667585265512508214305129160971410236608080987626482351384213500768434153543963179243693275670269875934380428872172737677009096639246402548181429755486527066101769519278423590812961880808967895056407307879512659309206660260480902525848037450508015500317981492266391771203906207818974512049757643756474538246644223286874449891141225280804804978552104940581923351196126014691829346440759798207541828738784335023072552775383306416111896332932496136551320285633376974132527848174585039305540083065874132316265139538064981702222297821320011955002034997963442645376537252546017786053346425360217926264184004157261335712419158011398025994604528029100498201726957080598661523756534881740972954649806152449598545656224969181878599504395256693398561397876173765006087258502875063467146594853996136729644865367066811191861615182154827208937551771797865967222563890140919777266599747818889410852868620855746723056933737989425716472014765051277151503731711103820416240303582576922656771052654955637823318378693377250101812833127036077269683881919287710713835767075395858140223125814282020311101370674394150045812590089134140674724715020367409858291550898717151271896293930110287713066211739808375774047947094560804798695960309956998009083790132564149072925111586948089836134676403581779654899790199683705569753907544210457722255277388673370222693620429515845023432642440250490180866042181902550248091206584636565476795253331543977913388784689658695176746507169708272831882316709335600354096282260819128508293497188888267908738872682454833914491964438354265218146768069894440249263892510779249321787810795251700578616883728332058977841976404522674767564349775022770070832397129683574548620569929512756105085710781599495201425566677797510584041825134560737721075717994980365553055405763943670494965331618381927914629395567632784350129570647709914979541668695964495151863971456629334204050758139800962207998104988861291817238207399525215720348681130955747555810552258522430472543949604710014863708411982917017470021046151532371673774953314501493571056583096326681955189674510405485628176331487837622994024853991463674451980656026479323217917960455646974065903598505273442230137865081448976857011042731969098902479364863920292960648593171487878588065465895185273862843718823406990283676620438609641508202510268027508171452342946869231923566087066309153938759227142376011049518048399093949713218385132894618178217195257431521621960091796213216798669997812885923272191250261799309379193332342753879824718347035481036472653960525353192638084493948288245159183297383101814664559750988332176238686540449720954506209457368727420591484016190264685778256727231688653467379434689206843218867385566180774398234773898535906225952840462576087722986127938175728037941052539302683193763467219380326964308025164360025568529749249316026190923526537491338441304189925445704987173678115606112260562572859043998488487603607311887410186699434770945950302840057092224967227713800227984100954617410174777594423537981373230808736316615371033350744258367866687442747997448832163160787040511008748000453662069368049114727823382024171223478816800180943201843950183738708236041797284760455023154709852889542284897481570609954784202910651846912502462553783208620735768167111331477864057827447855804679066536814591005063442740887773623291726540961108856468428664932778166413340242712187804710976000895719406713183028203113470849671159382102953892025085176965623963383095274698350193441366558422858036695645380148069424971116519473983987284922597591824549903922567663656740395652487852274196101182255334264645563589138620830797645765383685596452742883022958898301478293983793022477919691821868702528155830315010811719108545401609436045181109064847136576561980332450634683339858875352584261617848743035504315092459573147443851300986013183184960232967361937342576714915740125282952826278688289881296546353698189960141279136950093332307310176178258616735918225360206965892041264110251371880286617936041516921696938296887384937104373574836738387711106121710550114712734409080787147784918243946742656489152416174392860338046782469279926823849801824759817150249216203088108003801697972695681009383283283941078520363256045798698318777401132927963366866234425980282628654453116066636309692721746138346015560328057700122483163996778019536349253817591379679568743608988409432838812135399585602378212851364963278988750700995398759387531660318927184967408910796497492180890919176562170327004265452854207869175199646744479232869837074159997426389655858218190247728266576631423679416223796884549921229417686627947308212636820069407973798517775976836467890984554840224952811615116066868778555658498674562745178409632035078582419078591737619415027272110216741794468562752627596547880108150403125845689657132095446929963231185367335970919155216997275098244778217301508341122825419790371344421151265391045555564869482904315922909838304256868315247471747335401428792747912126030909286358295105470625375869131076529738531260393375527664583891547123896147112931712430019773817774207821411456665036895365055014158083993521665717768272277081665144492331284415985454090633016490886962575259810829179852450844413799261106382420771746132105103981966798136724181864421108907163070518561826533172501148391619222082304625782877342800120413821943034164461246238411569877288671387522750116963838593992328022025904149972284578491806699865264665235520901897096254073649723426373286960685525986560693612694428742722895692624680973579522505866821794097417533030982639533684338785385915512800864367458817159801771066828683277142393609351039787218644379831360998656590959816517222304206123736405509340178538977951611384807751656978723565183782100096169792819635061311098289786889901319531874402662265770672545769429909233278626211335230566263636738392653102615799454608307772549939501119184841046861662887330088577475248217846611556458532835725528359812238526788822655882715633306617428835736188818407081343658315507662826049933198781622522072079347442894025486347596056124026973384285961266628909984479451939928044720218517880451544069819836803099462300411334216242820336009328016780354734182902241806332565612003862103955320048997171248237071659429152119406078789521229253784398446640392050269818759653408006283620711270859848924154129470572469946142392881566824368756647097383919297180128707552634106900509910213529580238942225412705159484422017662080713976093368638947811207741043340731318683428656545707072528232718511606471686573020563593284434123951805631938022569007090025455137553532356767308735566528100060332604991845575553464845370821141558713314285312361250616071428668390105001048794187591389092719759809424868307205280463858314464461376494798833573146968613058826948196246174399780248654930999763731991053712542752762391027547896634761649168172134816611377305648492843787859967324526032896342581151881961397616654899022827685619259601745487046638965796094984711974186439182474195404106925522172564556529232250120149537750829904549158008534207923022452581606465688960148481509984689624458648412651595618892657557112369931265361752973832267345900561505002910393130793385111422415797345628091789991483161188657906729796370957213556742309178860254603600012842457145505604829409189764500412936588525292239540278967994151437090323996161490715379833359870217639046325824043049623300571220352030597470768938776658781560525953520726350198368920868936055286060443013122559661154673441071627435299769854177944136155994304242830277500586460751578258665458069441159654077650832058465578283277414784645626302644325877564554645826989044727621198034543020511477221251920365034943613785866457468013996881563796363450915904705419473245690879827404866460411792715686501243283372546057384005010852622779119832240837917470215537239002644042756482151514080346931322467372127596594494031263241023768952681218821682983916010500630253357131075723015866988478351249063198282063244241315800911942291479291076089245722394126294233227329532262569443286486111355975504332078643098553757403911009981898428300790563417847866992023419510876151256494098484048344972075919031594400642021412022924577146165160943068654644541116033186506188684700889957490681886362418220584701572626682965847585572696531264252517914028978728931646992020094756784872483367920531933881245879207222288520724057273393622054056891809582914853923830723227023997851749007254035460314192220511634332944950215947441416965490935968845287367990921533094126682245797439980700378531916076151829317401300160323915170294204825030366728119423744980919316605309534298529007711683406606214319269588992397412283971539218513588427734482953019913076027123920856403550902218498989375923723460510211716238833533003046097446465521105985798603991408465517384387165404752616024531666051358556639977156710416554228983977046022422259652421952421737603155962465525220569586192903472028056226893728675098645181373518149015475334832415200274164329543263627353351022605537866453555687552229339507423841423405698171490705085483035669206036382615794311023735289308826865225096891452803386340669185526755205430286151104640441343103181557846819535363911533580477293004702643946540361310372092564359409151424573631955188111550152103190175888703621597433605461367788130711790321644988303015091092118089923779351327479231402644925946633526157302049908585165590844767702570883643632744603018047139706012684881723538836466489035456628930575794295352452031154346834183670282430100591148200490239980226626300784621326083172610096914794761070737093095311808699724910448972297196496755928702032364683193691897066488209219240881212951319510148174333065949178296161176493165334920290718607778637259032442710942495522724404181809403053376699443808738204449331818928689631334894401475193560583041693857602582739292943890206263854744398744174706915169558353520766742557101725416713661577531169887203943043753570373983740385484045096119832726747010698460892491782126025460305807192181290361148226156833368456333486809045486108752409873189526994120387595701121555562925994200377168088174689831156815977423833310090061445840582783363329259575016427027538539632276068674129500548791790467696680520976930065508153520015072166559220548969935040991137959483187672650942608665774082078082078200197822444358169094982878808385737069147610569166997565301898170156466808796698230842280569420837763137741414854813518748802395376685555889831208336564626674437470442372712839443718428736123539890213381969155565756929616831173051562989855406334207190892629415142509926757834725896469612042625329451042346487598903999057193945840446290874256914232127233150683915354715768330654081133299852944557026260226974526538342210740192004495933870425577331102073920025362310029653129329691159773736809336727703161685236151153257586275376403690463290702248073402143848507315884109554893744995965908682397823925621147564665962161076585670899509780379615496933802898578947523672801021365676820174096478030478401879792501434795433666366775160698397986299564225996337238610343605805264659567114509608209305164268813363904025874022543291091489078323732577711218003206548933210561962797830014220952455986457738801020802906911524654706654502745418325233078546316965859623676172571623211890021236673542240389432778353582804262812611620309439796861614887940036470712886668461082078257231569491086232531881480538687854880139861493769730162994048073130838010779020854431406523570364307604532474231238619558327787726196867660102241878020607520453229331735210621401807891735765774014321008975829388626534306146451784070274129394391206119197790164455094129412005695700631892184466550831597793133893139576233366030867952345984641927353766463551781145561970546196897059243504194479357006495327405181882687377532651335768631242794236151336951685371573135867671234329258294712898987164221560515426879536623758875847292927764724968985417048077657718187148168772386196269571889283953068162591255681233398158362200233798038538018441502733440837182774770569137102324723420694953639188351174287540247336407512685834086308875088580272794360644345530749276493552483751942988588575560897677379878677988517291035394849195231222672812980784168298684518927031613701730713890248076183617908462758390126923161127430336025583106154859140089548724974574905249674862661985447835036610716548457318114280223712903167707836788614470615758783124472838108133770341676342517576450989621617453966450127202328917347562128667181982218229873433701736641878661968925534972175871536337589821846276933018878505225577417113402701160034338401482775159699486579083947506867827457315542455861773368772497236174845080334881304996078838532697668821917725601285604182213077541341974833185033840619341461349349104576643708435899012542834739335795127668342612667485776904966860997821318586128284628750603777319206220972539737445962201941654601999381868715059415756779745938764700782836690333795816648860453121544172479029670489438561263765978930866255404922309885844060646957960374602383323531624251259988896216259991341962901610100118233300344734665842700302279961888400084764998165759183889335987730367977423742322279519831794234601019246862551917195932733989770950888314751217015681739116476771698231486075723056164705106053085791231155456943201149041106114555111999164379578892879944517679254442521538241937271661706566136487270719010493243146079848992674414157580559422041269313935165552845818588530700676326
# 1439.6152136325836 <-- Time taken

0 pending reports

×

Problem Loading...

Note Loading...

Set Loading...