2020年12月27日日曜日

201227

Python


Dyck path とSelf-avoiding walk の融合(8)

151123(6) 分より多く求めることができた。

from graphillion import GraphSet

def make_stairs(m, n):
    s = 1
    grids = []
    for i in range(m * n + 1, 1, -m):
        for j in range(i - 1):
            a, b, c = s + j, s + j + 1, s + i + j
            grids.append((a, b))
            if j < i - m:
                grids.append((a, c))
        s += i
    return grids

def A(m, n):
    if m== 0 or n == 0: return 1
    universe = make_stairs(m, n)
    GraphSet.set_universe(universe)
    start, goal = m * n + 1, (n + 1) * (m * n + 2) // 2
    paths = GraphSet.paths(start, goal)
    return paths.len()

a = [0, 18, 12, 9, 7, 6]
for m in range(1, 6):
    print([m, [A(m, n) for n in range(a[m])]])

出力結果
[1, [1, 1, 2, 7, 40, 369, 5680, 150707, 6993712, 567670347, 80294818098, 19750798800833, 8447500756620198, 6286515496550185699, 8145835634791919637646, 18387066260739625200447575, 72319765957232441125506763756, 495718308213370458738098777141317]]
[2, [1, 1, 4, 44, 1282, 105022, 25769912, 19275194154, 43766618972372, 300611108229024928, 6247844562000612352002, 393544904039878168133931630]]
[3, [1, 1, 8, 284, 44360, 33970104, 136342264948, 2895975018297704, 323953287601729898128]]
[4, [1, 1, 16, 1872, 1592536, 11455899880, 752600965180800]]
[5, [1, 1, 32, 12384, 57870848, 3912442265360]]

2020年12月12日土曜日

201212

Python


おねえさん問題の3次元版

この記事は
日曜数学 Advent Calendar 2020 (https://adventar.org/calendars/4999)
の12/12 分として書いております。

「nXnXn gird graph の端から端まで、自身と交差することなく、全ての格子点を通る経路」
を数え上げてみた。
私のコードでは3X3X3 gird graph までしか求めることができなかった。

from graphillion import GraphSet

def make_nXnXn_grid_graph(n):
    grids = []
    for x in range(0, n):
        y = x * n * n
        for i in range(1, n + 1):
            for j in range(1, n + 1):
                if x < n - 1:
                    grids.append((y + i + (j - 1) * n, y + i + (j - 1) * n + n * n))
                if j < n:
                    grids.append((y + i + (j - 1) * n, y + i + j * n))
        for i in range(1, n * n, n):
            for j in range(1, n):
                grids.append((y + i + j - 1, y + i + j))
    return grids

def A(n):
    universe = make_nXnXn_grid_graph(n)
    GraphSet.set_universe(universe)
    start, goal = 1, n * n * n
    paths = GraphSet.paths(start, goal, is_hamilton=True)
    return paths.len()

print([A(n) for n in range(2, 4)])

出力結果
[6, 38256]

2020年11月28日土曜日

201128

Python


Number of closed Knight's tours on a m X n board

m = 3, 4, 5, 6 のときを出力してみた。

from graphillion import GraphSet

# (n > 3 and k > 2) or (n > 2 and k > 3)
def make_nXk_knight_graph(n, k):
    grids = []
    for i in range(1, k + 1):
        for j in range(1, n - 1):
            if i < k:
                grids.append((i + (j - 1) * k, i + (j + 1) * k + 1))
            if  i > 1:
                grids.append((i + (j - 1) * k, i + (j + 1) * k - 1))
    for i in range(1, k * n, k):
        for j in range(1, k - 1):
            if i < k * (n - 1):
                grids.append((i + j - 1, i + j + 1 + k))
            if i > k:
                grids.append((i + j - 1, i + j + 1 - k))
    return grids

def A(n, k):
    if n == 3 and k == 3: return 0
    universe = make_nXk_knight_graph(n, k)
    GraphSet.set_universe(universe)
    cycles = GraphSet.cycles(is_hamilton=True)
    return cycles.len()

print([A(3, n) for n in range(3, 30)])
print([A(4, n) for n in range(3, 20)])
print([A(5, n) for n in range(3, 10)])
print([A(6, n) for n in range(3, 8)])

出力結果
[0, 0, 0, 0, 0, 0, 0, 16, 0, 176, 0, 1536, 0, 15424, 0, 147728, 0, 1448416, 0, 14060048, 0, 136947616, 0, 1332257856, 0, 12965578752, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 8, 0, 44202, 0]
[0, 0, 8, 9862, 1067638]

2020年11月17日火曜日

201117

Sage


公開鍵作成(ビットコイン)(3)

Sage を最近入れなおしたら、
print 文が使えなく、print 関数でないと動かなくなっていた。

sage: p=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
sage: p
115792089237316195423570985008687907853269984665640564039457584007908834671663
sage: E=EllipticCurve(GF(p), [0, 7])
sage: Gx=0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
sage: Gy=0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
sage: G=E([Gx, Gy])
sage: N=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
sage: N
115792089237316195423570985008687907852837564279074904382605163141518161494337
sage: N*G
(0 : 1 : 0)
sage: 2017101920171019*G
(36572950727085182085382801403406684418997739286809164939833038507156062366242 : 43641162618061335383666517243600726585787626462467298998793806674351551668099 : 1)
sage: for i in [1..50]:
....:     print([i, i*G])
....:
[1, (55066263022277343669578718895168534326250603453777594175500187360389116729240 : 32670510020758816978083085130507043184471273380659243275938904335757337482424 : 1)]
[2, (89565891926547004231252920425935692360644145829622209833684329913297188986597 : 12158399299693830322967808612713398636155367887041628176798871954788371653930 : 1)]
[3, (112711660439710606056748659173929673102114977341539408544630613555209775888121 : 25583027980570883691656905877401976406448868254816295069919888960541586679410 : 1)]
[4, (103388573995635080359749164254216598308788835304023601477803095234286494993683 : 37057141145242123013015316630864329550140216928701153669873286428255828810018 : 1)]
[5, (21505829891763648114329055987619236494102133314575206970830385799158076338148 : 98003708678762621233683240503080860129026887322874138805529884920309963580118 : 1)]
[6, (115780575977492633039504758427830329241728645270042306223540962614150928364886 : 78735063515800386211891312544505775871260717697865196436804966483607426560663 : 1)]
[7, (41948375291644419605210209193538855353224492619856392092318293986323063962044 : 48361766907851246668144012348516735800090617714386977531302791340517493990618 : 1)]
[8, (21262057306151627953595685090280431278183829487175876377991189246716355947009 : 41749993296225487051377864631615517161996906063147759678534462689479575333124 : 1)]
[9, (78173298682877769088723994436027545680738210601369041078747105985693655485630 : 92362876758821804597230797234617159328445543067760556585160674174871431781431 : 1)]
[10, (72488970228380509287422715226575535698893157273063074627791787432852706183111 : 62070622898698443831883535403436258712770888294397026493185421712108624767191 : 1)]
[11, (53957576663012291606402345341061437133522758407718089353314528343643821967563 : 98386217607324929854432842186271083758341411730506808463586570492533445740059 : 1)]
[12, (94111259592240215275188773285036844871058226277992966241101117022315524122714 : 76870767327212528811304566602812752860184934880685532702451763239157141742375 : 1)]
[13, (109699032664856045668214896063362497021339186688470416858630178803463338613416 : 4835088675770141268294878046681321747490758260515711581034896622314066275713 : 1)]
[14, (33301309993451753050311554695703528430361259803437469669590207169100761277412 : 91711666877231500617203373035680263572492971120307578300405368749466283229019 : 1)]
[15, (97505755694356382817881959832717013755620551362654128955029190924747025549326 : 39856815248295663243990443767776362321337592747889787217974905533720651000664 : 1)]
[16, (104059883622109321374094289636044428849728529177856482232626205340719788190730 : 112122903140080327253741791678230372394936108416576609264408917599318947489825 : 1)]
[17, (100862081773581120499222301212791081193994281440454033593790618293887747050036 : 29883864782608871580821802176208615141762369223249393426421538275393411672951 : 1)]
[18, (38901272619685732968285380035171577070479117282397203902622597987558769928140 : 87393127487643849618870152207476122589010570440825041333620493866032028851544 : 1)]
[19, (19588375357829479297593261744848590434972900972071148260168833594658324503404 : 60568592333449737531184420002591396163903580402725242236305558432410218044282 : 1)]
[20, (34773495056115281091786765947597603724784643419904767525769502836017890139287 : 8470533044743364938367028725608288731153024648869546164814808839694950063162 : 1)]
[21, (24049875635381557237058143631624836741422505207761609709712554171343558302165 : 22669890352939653242079781319904043788036611953081321775127194249638113810828 : 1)]
[22, (29908081367423272746086114569421970207888665320998202915346633185016778189308 : 19705544727792599099830884487151299095417296550955739824847212341657057716097 : 1)]
[23, (21545045623056848826483343441081830815719530893582365358444562918095175994431 : 1296978981679745807043951140304019026881137717020402959957988455650813508967 : 1)]
[24, (115090238283566018960826468250608273126387416636633736439689841211757211870926 : 47185183227829754668635270747409548752084785367264057948864458978444304762303 : 1)]
[25, (66165162229742397718677620062386824252848999675912518712054484685772795754260 : 52018513869565587577673992057861898728543589604141463438466108080111932355586 : 1)]
[26, (46375854666189782329411331467438732923135312366454677774518044107217916677258 : 28872066516664221627799718496556756366588329842312456769228220433104069963108 : 1)]
[27, (99023490166718961467148584643029653267652245207820783364668071358307234645801 : 75362751621984629832705305750958516370071248757681753180287377123479199292501 : 1)]
[28, (38862517885349586199469132990077977525522399615397327331631717567532241615208 : 56796032415390392137148811074183321813766115156763923072036584114852967736264 : 1)]
[29, (88789495143442116025801984763830218317601484092281216301053684219001740388315 : 14971629676138079947354454610178388572791590863859394042797260533911845233794 : 1)]
[30, (49378132684229722274313556995573891527709373183446262831552359577455015004672 : 78123232289538034746933569305416412888858560602643272431489024958214987548923 : 1)]
[31, (48009403158434809478298710137233764200988036438868259456275038304221065242292 : 101379581344212856035375194820281365028426536613141130008386086305632315345538 : 1)]
[32, (95440839670107969455973995843666399663662641812074432045896568980475242364517 : 67400892360194400039319989411395972789004161889863182881857158544061243615929 : 1)]
[33, (10219441022991940610048493520113102240595005085840974180672104038719657072293 : 84023467742492607926612431243360899514584580916128500081114886405247779677078 : 1)]
[34, (12619776604307790469550660645393525758448419897555601226868753617320214526993 : 86272100689574882152938150858861318820088413186167100601966648021512258522745 : 1)]
[35, (43584328072464330665967763306297595761508151294385275883849271528835646125177 : 1171731419844835688478928898148416329180259014376715189840427072871218252873 : 1)]
[36, (101419098787597942766661010883841213675986572091206578880178916574081925093625 : 53748097764673089702489673031527129553025318704228137363806494938199580582828 : 1)]
[37, (44696466249196887777481833878429299174322536392992392205634510941844339159869 : 58341336599715296255997469230977942456412351469447624645098110293822755987119 : 1)]
[38, (82592391416753704330480457266605199466589998476548643675167586509583694299127 : 96352244311289141626709213538144106127822954871227876742730890119647945927428 : 1)]
[39, (58245954963044076335222193032419637688317373475605757277584156718458924469103 : 12764036181290433088658499435961200322530176588733628912045896254235383420282 : 1)]
[40, (65977930378964483966842705159007630837451149704819265634327747226133817150731 : 106574384264472205627876631445935175739834375489227447805380155393950263965849 : 1)]
[41, (55442706224332212356956949983947160877073898960448236395042968736464621521147 : 5905242281663190858892708265754696019921609450612128937011632221309721495543 : 1)]
[42, (115136800820456833737994126771386015026287095034625623644186278108926690779567 : 3479535755779840016334846590594739014278212596066547564422106861430200972724 : 1)]
[43, (96414945312501980282409358461754977502747357521062737878469375231739675541449 : 108016644921439980219149763541432916357155273945921323318636524851968650287411 : 1)]
[44, (42072772011086351294328511389423850314698152445154323541536957340534349973349 : 99133657745585934968186133288050721248258413615930917407282740640761199917928 : 1)]
[45, (2069755349039566255304036353648839232649715781170511813011535420394543798627 : 53173698995439924366951845531266805314230463309822098990695656330917108292762 : 1)]
[46, (112485767891133126222498548010271946438760990210983300801299715976951536768791 : 85739109496996784368776054024999276184984966609644199395125789597014054674947 : 1)]
[47, (54253141229701892740678441538472478126466317116121420289154985997987923385716 : 67647191893224491627918802490479062705030965032432110320079555712709270724822 : 1)]
[48, (50111670963408569345385204828013406423962206186815367070190059614189255189955 : 96344650049071302355595011727277439354119658646232861677212062449792674989672 : 1)]
[49, (109846273198995465046214558810696509369395695668678477567979041624391316796720 : 101711840700253487202274292900077312932162220876743713596510869779955653950519 : 1)]
[50, (18752372355191540835222161239240920883340654532661984440989362140194381601434 : 88478450163343634110113046083156231725329016889379853417393465962619872936244 : 1)]

2020年11月15日日曜日

201115

PARI


A338864, A338865, A338870 とA338871

それぞれのT(n;u) に関する関係式を確認してみた。

T(n) = if(n==0, 1, u*(n-1)!*sum(k=1, n, k*numdiv(k)*T(n-k)/(n-k)!));
print("A338864");
for(n=0, 10, print(n, " ", Vecrev(T(n))))

T(n) = if(n==0, 1, u*(n-1)!*sum(k=1, n, k*sigma(k)*T(n-k)/(n-k)!));
print("A338865");
for(n=0, 10, print(n, " ", Vecrev(T(n))))

T(n) = if(n==0, 1, u*sum(k=1, n, binomial(n-1, k-1)*numdiv(k)*T(n-k)));
print("A338870");
for(n=0, 10, print(n, " ", Vecrev(T(n))))

T(n) = if(n==0, 1, u*sum(k=1, n, binomial(n-1, k-1)*sigma(k)*T(n-k)));
print("A338871");
for(n=0, 10, print(n, " ", Vecrev(T(n))))

出力結果
A338864
0 [1]
1 [0, 1]
2 [0, 4, 1]
3 [0, 12, 12, 1]
4 [0, 72, 96, 24, 1]
5 [0, 240, 840, 360, 40, 1]
6 [0, 2880, 7200, 4920, 960, 60, 1]
7 [0, 10080, 70560, 65520, 19320, 2100, 84, 1]
8 [0, 161280, 745920, 887040, 362880, 58800, 4032, 112, 1]
9 [0, 1088640, 7983360, 12640320, 6652800, 1481760, 150192, 7056, 144, 1]
10 [0, 14515200, 105235200, 185068800, 123076800, 35441280, 4898880, 337680, 11520, 180, 1]
A338865
0 [1]
1 [0, 1]
2 [0, 6, 1]
3 [0, 24, 18, 1]
4 [0, 168, 204, 36, 1]
5 [0, 720, 2280, 780, 60, 1]
6 [0, 8640, 25200, 14400, 2100, 90, 1]
7 [0, 40320, 292320, 252000, 58800, 4620, 126, 1]
8 [0, 604800, 3729600, 4334400, 1486800, 183120, 8904, 168, 1]
9 [0, 4717440, 46811520, 76265280, 35743680, 6335280, 474768, 15624, 216, 1]
10 [0, 65318400, 696729600, 1368057600, 844603200, 203001120, 21576240, 1078560, 25560, 270, 1]
A338870
0 [1]
1 [0, 1]
2 [0, 2, 1]
3 [0, 2, 6, 1]
4 [0, 3, 20, 12, 1]
5 [0, 2, 55, 80, 20, 1]
6 [0, 4, 142, 405, 220, 30, 1]
7 [0, 2, 322, 1792, 1785, 490, 42, 1]
8 [0, 4, 779, 7224, 12152, 5810, 952, 56, 1]
9 [0, 3, 1608, 27323, 73920, 56532, 15498, 1680, 72, 1]
10 [0, 4, 3894, 99690, 414815, 482160, 204204, 35910, 2760, 90, 1]
A338871
0 [1]
1 [0, 1]
2 [0, 3, 1]
3 [0, 4, 9, 1]
4 [0, 7, 43, 18, 1]
5 [0, 6, 155, 175, 30, 1]
6 [0, 12, 511, 1230, 485, 45, 1]
7 [0, 8, 1442, 7231, 5600, 1085, 63, 1]
8 [0, 15, 4131, 37870, 52381, 18550, 2114, 84, 1]
9 [0, 13, 10323, 181063, 426006, 253281, 50022, 3738, 108, 1]
10 [0, 18, 28171, 818760, 3128245, 2956065, 937587, 116760, 6150, 135, 1]

2020年11月10日火曜日

201110

PARI


A008298 とA075525

Product_{k>0} (1 - x^k)^(-u)
= 1 + u*x/1! + (3*u+u^2)*x^2/2! + (8*u+9*u^2+u^3)*x^3/3! + ...
のx^k/k!の係数部分すなわち
 1, u, 3*u+u^2, 8*u+9*u^2+u^3, ...
を出力してみた。
同様に
Product_{k>0} (1 + x^k)^u
= 1 + u*x/1! + (u+u^2)*x^2/2! + (8*u+3*u^2+u^3)*x^3/3! + ...
のx^k/k!の係数部分すなわち
 1, u, u+u^2, 8*u+3*u^2+u^3, ...
も出力してみた。

N=10; x='x+O('x^N);
a(n) = sigma(n);
Vec(serlaplace(exp(sum(n=1, N, u*a(n)*x^n/n))))

a(n) = sumdiv(n, d, (-1)^(d+1)*n/d);
Vec(serlaplace(exp(sum(n=1, N, u*a(n)*x^n/n))))

出力結果
%3 = [1, u, u^2 + 3*u, u^3 + 9*u^2 + 8*u, u^4 + 18*u^3 + 59*u^2 + 42*u, u^5 + 30*u^4 + 215*u^3 + 450*u^2 + 144*u, u^6 + 45*u^5 + 565*u^4 + 2475*u^3 + 3394*u^2 + 1440*u, u^7 + 63*u^6 + 1225*u^5 + 9345*u^4 + 28294*u^3 + 30912*u^2 + 5760*u, u^8 + 84*u^7 + 2338*u^6 + 27720*u^5 + 147889*u^4 + 340116*u^3 + 293292*u^2 + 75600*u, u^9 + 108*u^8 + 4074*u^7 + 69552*u^6 + 579369*u^5 + 2341332*u^4 + 4335596*u^3 + 3032208*u^2 + 524160*u]
%5 = [1, u, u^2 + u, u^3 + 3*u^2 + 8*u, u^4 + 6*u^3 + 35*u^2 + 6*u, u^5 + 10*u^4 + 95*u^3 + 110*u^2 + 144*u, u^6 + 15*u^5 + 205*u^4 + 585*u^3 + 1594*u^2 + 480*u, u^7 + 21*u^6 + 385*u^5 + 1995*u^4 + 8974*u^3 + 8064*u^2 + 5760*u, u^8 + 28*u^7 + 658*u^6 + 5320*u^5 + 35329*u^4 + 70252*u^3 + 125292*u^2 + 5040*u, u^9 + 36*u^8 + 1050*u^7 + 12096*u^6 + 110649*u^5 + 392364*u^4 + 1178540*u^3 + 684144*u^2 + 524160*u]

2020年11月4日水曜日

201104

Ruby


ゴロム定規

最短ゴロム定規を出力してみた。

def is_Golomb_ruler(ary)
  n = ary.size
  a = []
  (0..n - 2).each{|i|
    (i + 1..n - 1).each{|j|
      k = ary[j] - ary[i]
      if a.include?(k)
        return false
      else
        a << k
      end
    }
  }
  true
end

# 対称型を含む
def A(deg, l)
  a = []
  (1..l).to_a.combination(deg - 1){|c|
    ary = [0] + c
    a << ary if is_Golomb_ruler(ary)
  }
  a
end

# 対称型を省く
def B(deg, l)
  a = []
  A(deg, l).each{|ary|
    if !a.include?(ary.map{|i| ary[-1] - i}.reverse)
      a << ary
      p ary
    end
  }
end

B(2,  1)
B(3,  3)
B(4,  6)
B(5, 11)
B(6, 17)
B(7, 25)

出力結果
[0, 1]
[0, 1, 3]
[0, 1, 4, 6]
[0, 1, 4, 9, 11]
[0, 2, 7, 8, 11]
[0, 1, 4, 10, 12, 17]
[0, 1, 4, 10, 15, 17]
[0, 1, 8, 11, 13, 17]
[0, 1, 8, 12, 14, 17]
[0, 1, 4, 10, 18, 23, 25]
[0, 1, 7, 11, 20, 23, 25]
[0, 1, 11, 16, 19, 23, 25]
[0, 2, 3, 10, 16, 21, 25]
[0, 2, 7, 13, 21, 22, 25]

2020年10月20日火曜日

201020(2)

Crystal


A006950(2)

先程と同様にCrystal に書き換えてみた。

def a006950(n)
  return 1 if n < 3
  a = (1..n - 1).map{|i| [i]}
  ary = [[n]]
  while a.size != 0
    b = Array(Array(Int32)).new
    a.each{|i|
      x = i[-1].to_i
      s = n - i.sum
      t = x % 2
      (x + t..s - 1).each{|j| b << i.clone + [j]}
      ary << i.clone + [s] if s >= x + t
    }
    a = b
  end
  ary.size
end

p (0..90).map{|i| a006950(i)}

出力結果
[1, 1, 1, 2, 3, 4, 5, 7, 10, 13, 16, 21, 28, 35, 43, 55, 70, 86, 105, 130, 161, 196, 236, 287, 350, 420, 501, 602, 722, 858, 1016, 1206, 1431, 1687, 1981, 2331, 2741, 3206, 3740, 4368, 5096, 5922, 6868, 7967, 9233, 10670, 12306, 14193, 16357, 18803, 21581, 24766, 28394, 32490, 37128, 42411, 48406, 55159, 62777, 71416, 81182, 92152, 104494, 118434, 134131, 151725, 171467, 193676, 218607, 246491, 277691, 312677, 351841, 395537, 444314, 498852, 559727, 627509, 703002, 787171, 880896, 985043, 1100775, 1229494, 1372499, 1531086, 1706958, 1902121, 2118469, 2357947, 2623017]

201020

Crystal


A316384(2)

Crystal ではinject ではなく、reduce だが、
和の場合はsum が使える。

def f(ary)
  f_ary = Array(Int32).new
  while !(ary.all?{|i| i == 0})
    a = Array(Int32).new
    s = 0
    ary.each{|i|
      if i == 1
        a << 0
        s += 1
      elsif i > 0
        a << i - 2
        s += 2
      end
    }
    ary = a
    f_ary << s
  end
  f_ary
end

def a316384(n)
  return 1 if n < 3
  a = (1..n - 1).map{|i| [i]}
  ary = Array(Array(Int32)).new
  while a.size != 0
    b = Array(Array(Int32)).new
    a.each{|i|
      x = i[-1].to_i
      s = n - i.sum
      t = x % 2
      (x + t..s - 1).each{|j| b << i.clone + [j]}
      ary << i.clone + [s] if s >= x + t
    }
    a = b
  end
  ary.select{|i| i.reverse == f(i)}.size
end

p (0..90).map{|i| a316384(i)}

出力結果
[1, 1, 1, 0, 1, 0, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 4, 2, 5, 2, 5, 2, 6, 3, 8, 4, 9, 4, 10, 4, 12, 6, 15, 7, 17, 7, 19, 8, 22, 10, 26, 12, 30, 13, 33, 14, 38, 17, 45, 21, 51, 22, 56, 24, 64, 29, 74, 33, 83, 36, 92, 40, 104, 46, 119, 53, 133, 58, 147, 63, 165, 73, 187, 83, 208, 90, 229, 99, 256, 113, 288, 127, 319, 138, 351, 152, 390, 171, 435, 191, 481]

2020年10月16日金曜日

201016

Crystal


Number of solutions to +- 1 +- 2 +- 3 +- ... +- n = 0(6)

以下を用いて、n が4000 のときの値を求めることはおすすめしない。

require "big"

def a063865(n)
  ary = [1.to_big_i]
  m = n * (n + 1) // 4
  a = Array.new(m + 1){0.to_big_i}
  a[0] = 1.to_big_i
  (1..n).each{|i|
    b = a.clone
    (0..[(i - 1) * i / 2, m - i].min).each{|k| b[k + i] += a[k]}
    a = b
    i * (i + 1) % 4 == 0 ? ary << a[i * (i + 1) // 4] : ary << 0.to_big_i
  }
  ary
end

p a063865(1000)[-1]

出力結果
467708586991053780130476928496471502490480200263913521598374850751872554493810444457551220080062611698129340084492921358002542871554381676735263500063986630523649271451391806356678763700553308953903873511563867155215734010997332808966175771715884247295296277348179194597363883854664431808932677416

2020年10月10日土曜日

201010

Python


足し算と引き算だけで円を描く(3)

Python で書いてみた。

def A(r):
    xy = [['□' for _ in range(r + 1)] for _ in range(r + 1)]
    a, x, y = r, 0, r
    while x <= y:
        xy[x][y], xy[y][x] = '■', '■'
        a, x = a - x - x - 1, x + 1
        if a < 0:
            a, y = a + y + y - 1, y - 1 
    for i in xy:
        print(''.join(i))

for i in range(21):
    A(i)

出力結果
□■
■■
□□■
□□■
■■□
□□□■
□□□■
□□■□
■■□□
□□□□■
□□□□■
□□□□■
□□□■□
■■■□□
□□□□□■
□□□□□■
□□□□□■
□□□□■□
□□□■□□
■■■□□□
□□□□□□■
□□□□□□■
□□□□□□■
□□□□□■□
□□□□□■□
□□□■■□□
■■■□□□□
□□□□□□□■
□□□□□□□■
□□□□□□□■
□□□□□□■□
□□□□□□■□
□□□□□■□□
□□□■■□□□
■■■□□□□□
□□□□□□□□■
□□□□□□□□■
□□□□□□□□■
□□□□□□□■□
□□□□□□□■□
□□□□□□■□□
□□□□□■■□□
□□□■■□□□□
■■■□□□□□□
□□□□□□□□□■
□□□□□□□□□■
□□□□□□□□□■
□□□□□□□□□■
□□□□□□□□■□
□□□□□□□□■□
□□□□□□□■□□
□□□□□□■□□□
□□□□■■□□□□
■■■■□□□□□□
□□□□□□□□□□■
□□□□□□□□□□■
□□□□□□□□□□■
□□□□□□□□□□■
□□□□□□□□□■□
□□□□□□□□□■□
□□□□□□□□■□□
□□□□□□□■□□□
□□□□□□■□□□□
□□□□■■□□□□□
■■■■□□□□□□□
□□□□□□□□□□□■
□□□□□□□□□□□■
□□□□□□□□□□□■
□□□□□□□□□□□■
□□□□□□□□□□■□
□□□□□□□□□□■□
□□□□□□□□□■□□
□□□□□□□□□■□□
□□□□□□□□■□□□
□□□□□□■■□□□□
□□□□■■□□□□□□
■■■■□□□□□□□□
□□□□□□□□□□□□■
□□□□□□□□□□□□■
□□□□□□□□□□□□■
□□□□□□□□□□□□■
□□□□□□□□□□□■□
□□□□□□□□□□□■□
□□□□□□□□□□■□□
□□□□□□□□□□■□□
□□□□□□□□□■□□□
□□□□□□□□■□□□□
□□□□□□■■□□□□□
□□□□■■□□□□□□□
■■■■□□□□□□□□□
□□□□□□□□□□□□□■
□□□□□□□□□□□□□■
□□□□□□□□□□□□□■
□□□□□□□□□□□□□■
□□□□□□□□□□□□■□
□□□□□□□□□□□□■□
□□□□□□□□□□□□■□
□□□□□□□□□□□■□□
□□□□□□□□□□■□□□
□□□□□□□□□□■□□□
□□□□□□□□■■□□□□
□□□□□□□■□□□□□□
□□□□■■■□□□□□□□
■■■■□□□□□□□□□□
□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□■
□□□□□□□□□□□□□■□
□□□□□□□□□□□□□■□
□□□□□□□□□□□□□■□
□□□□□□□□□□□□■□□
□□□□□□□□□□□□■□□
□□□□□□□□□□□■□□□
□□□□□□□□□□■□□□□
□□□□□□□□□■□□□□□
□□□□□□□■■□□□□□□
□□□□■■■□□□□□□□□
■■■■□□□□□□□□□□□
□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□■□□
□□□□□□□□□□□□■□□□
□□□□□□□□□□□■□□□□
□□□□□□□□□□■□□□□□
□□□□□□□□□■□□□□□□
□□□□□□□■■□□□□□□□
□□□□■■■□□□□□□□□□
■■■■□□□□□□□□□□□□
□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□■□□□□
□□□□□□□□□□□■□□□□□
□□□□□□□□□■■□□□□□□
□□□□□□□■■□□□□□□□□
□□□□□■■□□□□□□□□□□
■■■■■□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□■□□□□
□□□□□□□□□□□□■□□□□□
□□□□□□□□□□□■□□□□□□
□□□□□□□□□□■□□□□□□□
□□□□□□□□■■□□□□□□□□
□□□□□■■■□□□□□□□□□□
■■■■■□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□□■□□□□
□□□□□□□□□□□□□□■□□□□
□□□□□□□□□□□□□■□□□□□
□□□□□□□□□□□■■□□□□□□
□□□□□□□□□□■□□□□□□□□
□□□□□□□□■■□□□□□□□□□
□□□□□■■■□□□□□□□□□□□
■■■■■□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□□□■□□□□
□□□□□□□□□□□□□□■□□□□□
□□□□□□□□□□□□□■□□□□□□
□□□□□□□□□□□□■□□□□□□□
□□□□□□□□□□■■□□□□□□□□
□□□□□□□□■■□□□□□□□□□□
□□□□□■■■□□□□□□□□□□□□
■■■■■□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□□□■
□□□□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□□□□■□
□□□□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□□□□■□□
□□□□□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□□□□□■□□□
□□□□□□□□□□□□□□□□■□□□□
□□□□□□□□□□□□□□□■□□□□□
□□□□□□□□□□□□□□■□□□□□□
□□□□□□□□□□□□□■□□□□□□□
□□□□□□□□□□□□■□□□□□□□□
□□□□□□□□□□■■□□□□□□□□□
□□□□□□□□■■□□□□□□□□□□□
□□□□□■■■□□□□□□□□□□□□□
■■■■■□□□□□□□□□□□□□□□□

2020年10月9日金曜日

201009

Ruby


足し算と引き算だけで円を描く(2)

文字コードの設定が変わると出力がかわる。
chcp で932 の場合は
chcp 65001 で変更すればよい。

2020年9月20日日曜日

200920

Ruby


足し算と引き算だけで円を描く(1)

原点を中心とする半径r の円にみえる座標を選ぶことを考える。

(r^2 - r ≦) x^2 + y^2 ≦ r^2 + r
を満たす(x, y) を探す。
つまり
a(x, y) = r^2 + r - x^2 - y^2
が0 以上(、2r 以下)となるように(x, y) を探す。

(0, r) から出発したとき、a(x, y) = r である。
yを固定し、xを1増加させ、右に移動することを考える。
このとき、a(x, y) は2x+1 減少する。
右に移動し続け、a(x, y) < 0 となったとき、
y を1減少させ、下へ移動させる。
このとき、a(x, y) は2y-1 増加する。
この作業を繰り返し、
円の8分の1を描き、
あとは対称性を用いて全体を表示させる。

このアルゴリズムを使い、円の一部を描いてみた。

def A(r)
  xy = Array.new(r + 1){Array.new(r + 1, '□')}
  a, x, y = r, 0, r
  while x <= y
    xy[x][y], xy[y][x] = '■', '■'
    a, x = a - x - x - 1, x + 1
    a, y = a + y + y - 1, y - 1 if a < 0
  end
  xy.each{|i| p i.join}
end

(0..20).each{|i| A(i)}

出力結果
"■"
"□■"
"■■"
"□□■"
"□□■"
"■■□"
"□□□■"
"□□□■"
"□□■□"
"■■□□"
"□□□□■"
"□□□□■"
"□□□□■"
"□□□■□"
"■■■□□"
"□□□□□■"
"□□□□□■"
"□□□□□■"
"□□□□■□"
"□□□■□□"
"■■■□□□"
"□□□□□□■"
"□□□□□□■"
"□□□□□□■"
"□□□□□■□"
"□□□□□■□"
"□□□■■□□"
"■■■□□□□"
"□□□□□□□■"
"□□□□□□□■"
"□□□□□□□■"
"□□□□□□■□"
"□□□□□□■□"
"□□□□□■□□"
"□□□■■□□□"
"■■■□□□□□"
"□□□□□□□□■"
"□□□□□□□□■"
"□□□□□□□□■"
"□□□□□□□■□"
"□□□□□□□■□"
"□□□□□□■□□"
"□□□□□■■□□"
"□□□■■□□□□"
"■■■□□□□□□"
"□□□□□□□□□■"
"□□□□□□□□□■"
"□□□□□□□□□■"
"□□□□□□□□□■"
"□□□□□□□□■□"
"□□□□□□□□■□"
"□□□□□□□■□□"
"□□□□□□■□□□"
"□□□□■■□□□□"
"■■■■□□□□□□"
"□□□□□□□□□□■"
"□□□□□□□□□□■"
"□□□□□□□□□□■"
"□□□□□□□□□□■"
"□□□□□□□□□■□"
"□□□□□□□□□■□"
"□□□□□□□□■□□"
"□□□□□□□■□□□"
"□□□□□□■□□□□"
"□□□□■■□□□□□"
"■■■■□□□□□□□"
"□□□□□□□□□□□■"
"□□□□□□□□□□□■"
"□□□□□□□□□□□■"
"□□□□□□□□□□□■"
"□□□□□□□□□□■□"
"□□□□□□□□□□■□"
"□□□□□□□□□■□□"
"□□□□□□□□□■□□"
"□□□□□□□□■□□□"
"□□□□□□■■□□□□"
"□□□□■■□□□□□□"
"■■■■□□□□□□□□"
"□□□□□□□□□□□□■"
"□□□□□□□□□□□□■"
"□□□□□□□□□□□□■"
"□□□□□□□□□□□□■"
"□□□□□□□□□□□■□"
"□□□□□□□□□□□■□"
"□□□□□□□□□□■□□"
"□□□□□□□□□□■□□"
"□□□□□□□□□■□□□"
"□□□□□□□□■□□□□"
"□□□□□□■■□□□□□"
"□□□□■■□□□□□□□"
"■■■■□□□□□□□□□"
"□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□■"
"□□□□□□□□□□□□■□"
"□□□□□□□□□□□□■□"
"□□□□□□□□□□□□■□"
"□□□□□□□□□□□■□□"
"□□□□□□□□□□■□□□"
"□□□□□□□□□□■□□□"
"□□□□□□□□■■□□□□"
"□□□□□□□■□□□□□□"
"□□□□■■■□□□□□□□"
"■■■■□□□□□□□□□□"
"□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□■□□"
"□□□□□□□□□□□■□□□"
"□□□□□□□□□□■□□□□"
"□□□□□□□□□■□□□□□"
"□□□□□□□■■□□□□□□"
"□□□□■■■□□□□□□□□"
"■■■■□□□□□□□□□□□"
"□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□■□□□"
"□□□□□□□□□□□■□□□□"
"□□□□□□□□□□■□□□□□"
"□□□□□□□□□■□□□□□□"
"□□□□□□□■■□□□□□□□"
"□□□□■■■□□□□□□□□□"
"■■■■□□□□□□□□□□□□"
"□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□■□□□"
"□□□□□□□□□□□□□■□□□"
"□□□□□□□□□□□□■□□□□"
"□□□□□□□□□□□■□□□□□"
"□□□□□□□□□■■□□□□□□"
"□□□□□□□■■□□□□□□□□"
"□□□□□■■□□□□□□□□□□"
"■■■■■□□□□□□□□□□□□"
"□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□□■□□□"
"□□□□□□□□□□□□□■□□□□"
"□□□□□□□□□□□□■□□□□□"
"□□□□□□□□□□□■□□□□□□"
"□□□□□□□□□□■□□□□□□□"
"□□□□□□□□■■□□□□□□□□"
"□□□□□■■■□□□□□□□□□□"
"■■■■■□□□□□□□□□□□□□"
"□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□□□■□□□"
"□□□□□□□□□□□□□□■□□□□"
"□□□□□□□□□□□□□□■□□□□"
"□□□□□□□□□□□□□■□□□□□"
"□□□□□□□□□□□■■□□□□□□"
"□□□□□□□□□□■□□□□□□□□"
"□□□□□□□□■■□□□□□□□□□"
"□□□□□■■■□□□□□□□□□□□"
"■■■■■□□□□□□□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□□□□■□□□"
"□□□□□□□□□□□□□□□□■□□□"
"□□□□□□□□□□□□□□□■□□□□"
"□□□□□□□□□□□□□□■□□□□□"
"□□□□□□□□□□□□□■□□□□□□"
"□□□□□□□□□□□□■□□□□□□□"
"□□□□□□□□□□■■□□□□□□□□"
"□□□□□□□□■■□□□□□□□□□□"
"□□□□□■■■□□□□□□□□□□□□"
"■■■■■□□□□□□□□□□□□□□□"
"□□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□□■"
"□□□□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□□□■□"
"□□□□□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□□□□□□■□□"
"□□□□□□□□□□□□□□□□□■□□□"
"□□□□□□□□□□□□□□□□□■□□□"
"□□□□□□□□□□□□□□□□■□□□□"
"□□□□□□□□□□□□□□□■□□□□□"
"□□□□□□□□□□□□□□■□□□□□□"
"□□□□□□□□□□□□□■□□□□□□□"
"□□□□□□□□□□□□■□□□□□□□□"
"□□□□□□□□□□■■□□□□□□□□□"
"□□□□□□□□■■□□□□□□□□□□□"
"□□□□□■■■□□□□□□□□□□□□□"
"■■■■■□□□□□□□□□□□□□□□□"

2020年9月6日日曜日

200906

PARI


A010034

本当に最大公約数が1 にならないことを確かめてみた。

f(n) = gcd(n^17+9, (n+1)^17+9);
f(8424432925592889329288197322308900672459420460792433)

出力結果
%2 = 8936582237915716659950962253358945635793453256935559

2020年8月30日日曜日

200830

Ruby


88888

意外なことに88888 が見つからなかった。

(1..9).to_a.permutation{|i|
  a, b = i[0..4].join.to_i, i[5..-1].join.to_i
  if (a - b) % 11111 == 0
    puts "#{a} - #{b} = #{a - b}"
  elsif (a + b) % 11111 == 0
    puts "#{a} + #{b} = #{a + b}"
  end
}

出力結果
13579 - 2468 = 11111
13597 - 2486 = 11111
13759 - 2648 = 11111
13795 - 2684 = 11111
13957 - 2846 = 11111
13975 - 2864 = 11111
15379 - 4268 = 11111
15397 - 4286 = 11111
15739 - 4628 = 11111
15793 - 4682 = 11111
15937 - 4826 = 11111
15973 - 4862 = 11111
17359 - 6248 = 11111
17395 - 6284 = 11111
17539 - 6428 = 11111
17593 - 6482 = 11111
17935 - 6824 = 11111
17953 - 6842 = 11111
19357 - 8246 = 11111
19375 - 8264 = 11111
19537 - 8426 = 11111
19573 - 8462 = 11111
19735 - 8624 = 11111
19753 - 8642 = 11111
25718 - 3496 = 22222
25871 - 3649 = 22222
27158 - 4936 = 22222
27185 - 4963 = 22222
28571 - 6349 = 22222
28715 - 6493 = 22222
31478 - 9256 = 22222
31487 - 9265 = 22222
31748 - 9526 = 22222
31784 - 9562 = 22222
31847 - 9625 = 22222
31874 - 9652 = 22222
41268 - 7935 = 33333
41286 - 7953 = 33333
46279 - 1835 = 44444
46297 - 1853 = 44444
46819 - 2375 = 44444
46981 - 2537 = 44444
47629 - 3185 = 44444
47962 - 3518 = 44444
48169 - 3725 = 44444
48196 - 3752 = 44444
49627 - 5183 = 44444
49681 - 5237 = 44444
49762 - 5318 = 44444
49816 - 5372 = 44444
51238 - 6794 = 44444
51427 - 6983 = 44444
52138 - 7694 = 44444
53416 - 8972 = 44444
54127 - 9683 = 44444
54316 - 9872 = 44444
56789 - 1234 = 55555
56798 - 1243 = 55555
56834 - 1279 = 55555
56879 - 1324 = 55555
56897 - 1342 = 55555
56942 - 1387 = 55555
56978 - 1423 = 55555
56987 - 1432 = 55555
57239 - 1684 = 55555
57248 - 1693 = 55555
57689 - 2134 = 55555
57698 - 2143 = 55555
57869 - 2314 = 55555
57896 - 2341 = 55555
57941 - 2386 = 55555
57968 - 2413 = 55555
57986 - 2431 = 55555
58319 - 2764 = 55555
58346 - 2791 = 55555
58679 - 3124 = 55555
58697 - 3142 = 55555
58724 - 3169 = 55555
58769 - 3214 = 55555
58796 - 3241 = 55555
58967 - 3412 = 55555
58976 - 3421 = 55555
59417 - 3862 = 55555
59426 - 3871 = 55555
59678 - 4123 = 55555
59687 - 4132 = 55555
59723 - 4168 = 55555
59768 - 4213 = 55555
59786 - 4231 = 55555
59831 - 4276 = 55555
59867 - 4312 = 55555
59876 - 4321 = 55555
61289 - 5734 = 55555
61298 - 5743 = 55555
61379 - 5824 = 55555
61397 - 5842 = 55555
61478 - 5923 = 55555
61487 - 5932 = 55555
69153 - 2487 = 66666
69513 - 2847 = 66666
71358 - 4692 = 66666
71529 - 4863 = 66666
71934 - 5268 = 66666
73158 - 6492 = 66666
73194 - 6528 = 66666
73491 - 6825 = 66666
74931 - 8265 = 66666
75129 - 8463 = 66666
81256 - 3479 = 77777
81472 - 3695 = 77777
81526 - 3749 = 77777
81742 - 3965 = 77777
82156 - 4379 = 77777
82516 - 4739 = 77777
84172 - 6395 = 77777
84712 - 6935 = 77777
85126 - 7349 = 77777
85216 - 7439 = 77777
87142 - 9365 = 77777
87412 - 9635 = 77777
91234 + 8765 = 99999
91235 + 8764 = 99999
91243 + 8756 = 99999
91246 + 8753 = 99999
91253 + 8746 = 99999
91256 + 8743 = 99999
91264 + 8735 = 99999
91265 + 8734 = 99999
91324 + 8675 = 99999
91325 + 8674 = 99999
91342 + 8657 = 99999
91347 + 8652 = 99999
91352 + 8647 = 99999
91357 + 8642 = 99999
91374 + 8625 = 99999
91375 + 8624 = 99999
91423 + 8576 = 99999
91426 + 8573 = 99999
91432 + 8567 = 99999
91437 + 8562 = 99999
91462 + 8537 = 99999
91467 + 8532 = 99999
91473 + 8526 = 99999
91476 + 8523 = 99999
91523 + 8476 = 99999
91526 + 8473 = 99999
91532 + 8467 = 99999
91537 + 8462 = 99999
91562 + 8437 = 99999
91567 + 8432 = 99999
91573 + 8426 = 99999
91576 + 8423 = 99999
91624 + 8375 = 99999
91625 + 8374 = 99999
91642 + 8357 = 99999
91647 + 8352 = 99999
91652 + 8347 = 99999
91657 + 8342 = 99999
91674 + 8325 = 99999
91675 + 8324 = 99999
91734 + 8265 = 99999
91735 + 8264 = 99999
91743 + 8256 = 99999
91746 + 8253 = 99999
91753 + 8246 = 99999
91756 + 8243 = 99999
91764 + 8235 = 99999
91765 + 8234 = 99999
92134 + 7865 = 99999
92135 + 7864 = 99999
92143 + 7856 = 99999
92146 + 7853 = 99999
92153 + 7846 = 99999
92156 + 7843 = 99999
92164 + 7835 = 99999
92165 + 7834 = 99999
92314 + 7685 = 99999
92315 + 7684 = 99999
92341 + 7658 = 99999
92348 + 7651 = 99999
92351 + 7648 = 99999
92358 + 7641 = 99999
92384 + 7615 = 99999
92385 + 7614 = 99999
92413 + 7586 = 99999
92416 + 7583 = 99999
92431 + 7568 = 99999
92438 + 7561 = 99999
92461 + 7538 = 99999
92468 + 7531 = 99999
92483 + 7516 = 99999
92486 + 7513 = 99999
92513 + 7486 = 99999
92516 + 7483 = 99999
92531 + 7468 = 99999
92538 + 7461 = 99999
92561 + 7438 = 99999
92568 + 7431 = 99999
92583 + 7416 = 99999
92586 + 7413 = 99999
92614 + 7385 = 99999
92615 + 7384 = 99999
92641 + 7358 = 99999
92648 + 7351 = 99999
92651 + 7348 = 99999
92658 + 7341 = 99999
92684 + 7315 = 99999
92685 + 7314 = 99999
92834 + 7165 = 99999
92835 + 7164 = 99999
92843 + 7156 = 99999
92846 + 7153 = 99999
92853 + 7146 = 99999
92856 + 7143 = 99999
92864 + 7135 = 99999
92865 + 7134 = 99999
93124 + 6875 = 99999
93125 + 6874 = 99999
93142 + 6857 = 99999
93147 + 6852 = 99999
93152 + 6847 = 99999
93157 + 6842 = 99999
93174 + 6825 = 99999
93175 + 6824 = 99999
93214 + 6785 = 99999
93215 + 6784 = 99999
93241 + 6758 = 99999
93248 + 6751 = 99999
93251 + 6748 = 99999
93258 + 6741 = 99999
93284 + 6715 = 99999
93285 + 6714 = 99999
93412 + 6587 = 99999
93417 + 6582 = 99999
93421 + 6578 = 99999
93428 + 6571 = 99999
93471 + 6528 = 99999
93478 + 6521 = 99999
93482 + 6517 = 99999
93487 + 6512 = 99999
93512 + 6487 = 99999
93517 + 6482 = 99999
93521 + 6478 = 99999
93528 + 6471 = 99999
93571 + 6428 = 99999
93578 + 6421 = 99999
93582 + 6417 = 99999
93587 + 6412 = 99999
93714 + 6285 = 99999
93715 + 6284 = 99999
93741 + 6258 = 99999
93748 + 6251 = 99999
93751 + 6248 = 99999
93758 + 6241 = 99999
93784 + 6215 = 99999
93785 + 6214 = 99999
93824 + 6175 = 99999
93825 + 6174 = 99999
93842 + 6157 = 99999
93847 + 6152 = 99999
93852 + 6147 = 99999
93857 + 6142 = 99999
93874 + 6125 = 99999
93875 + 6124 = 99999
94123 + 5876 = 99999
94126 + 5873 = 99999
94132 + 5867 = 99999
94137 + 5862 = 99999
94162 + 5837 = 99999
94167 + 5832 = 99999
94173 + 5826 = 99999
94176 + 5823 = 99999
94213 + 5786 = 99999
94216 + 5783 = 99999
94231 + 5768 = 99999
94238 + 5761 = 99999
94261 + 5738 = 99999
94268 + 5731 = 99999
94283 + 5716 = 99999
94286 + 5713 = 99999
94312 + 5687 = 99999
94317 + 5682 = 99999
94321 + 5678 = 99999
94328 + 5671 = 99999
94371 + 5628 = 99999
94378 + 5621 = 99999
94382 + 5617 = 99999
94387 + 5612 = 99999
94612 + 5387 = 99999
94617 + 5382 = 99999
94621 + 5378 = 99999
94628 + 5371 = 99999
94671 + 5328 = 99999
94678 + 5321 = 99999
94682 + 5317 = 99999
94687 + 5312 = 99999
94713 + 5286 = 99999
94716 + 5283 = 99999
94731 + 5268 = 99999
94738 + 5261 = 99999
94761 + 5238 = 99999
94768 + 5231 = 99999
94783 + 5216 = 99999
94786 + 5213 = 99999
94823 + 5176 = 99999
94826 + 5173 = 99999
94832 + 5167 = 99999
94837 + 5162 = 99999
94862 + 5137 = 99999
94867 + 5132 = 99999
94873 + 5126 = 99999
94876 + 5123 = 99999
95123 + 4876 = 99999
95126 + 4873 = 99999
95132 + 4867 = 99999
95137 + 4862 = 99999
95162 + 4837 = 99999
95167 + 4832 = 99999
95173 + 4826 = 99999
95176 + 4823 = 99999
95213 + 4786 = 99999
95216 + 4783 = 99999
95231 + 4768 = 99999
95238 + 4761 = 99999
95261 + 4738 = 99999
95268 + 4731 = 99999
95283 + 4716 = 99999
95286 + 4713 = 99999
95312 + 4687 = 99999
95317 + 4682 = 99999
95321 + 4678 = 99999
95328 + 4671 = 99999
95371 + 4628 = 99999
95378 + 4621 = 99999
95382 + 4617 = 99999
95387 + 4612 = 99999
95612 + 4387 = 99999
95617 + 4382 = 99999
95621 + 4378 = 99999
95628 + 4371 = 99999
95671 + 4328 = 99999
95678 + 4321 = 99999
95682 + 4317 = 99999
95687 + 4312 = 99999
95713 + 4286 = 99999
95716 + 4283 = 99999
95731 + 4268 = 99999
95738 + 4261 = 99999
95761 + 4238 = 99999
95768 + 4231 = 99999
95783 + 4216 = 99999
95786 + 4213 = 99999
95823 + 4176 = 99999
95826 + 4173 = 99999
95832 + 4167 = 99999
95837 + 4162 = 99999
95862 + 4137 = 99999
95867 + 4132 = 99999
95873 + 4126 = 99999
95876 + 4123 = 99999
96124 + 3875 = 99999
96125 + 3874 = 99999
96142 + 3857 = 99999
96147 + 3852 = 99999
96152 + 3847 = 99999
96157 + 3842 = 99999
96174 + 3825 = 99999
96175 + 3824 = 99999
96214 + 3785 = 99999
96215 + 3784 = 99999
96241 + 3758 = 99999
96248 + 3751 = 99999
96251 + 3748 = 99999
96258 + 3741 = 99999
96284 + 3715 = 99999
96285 + 3714 = 99999
96412 + 3587 = 99999
96417 + 3582 = 99999
96421 + 3578 = 99999
96428 + 3571 = 99999
96471 + 3528 = 99999
96478 + 3521 = 99999
96482 + 3517 = 99999
96487 + 3512 = 99999
96512 + 3487 = 99999
96517 + 3482 = 99999
96521 + 3478 = 99999
96528 + 3471 = 99999
96571 + 3428 = 99999
96578 + 3421 = 99999
96582 + 3417 = 99999
96587 + 3412 = 99999
96714 + 3285 = 99999
96715 + 3284 = 99999
96741 + 3258 = 99999
96748 + 3251 = 99999
96751 + 3248 = 99999
96758 + 3241 = 99999
96784 + 3215 = 99999
96785 + 3214 = 99999
96824 + 3175 = 99999
96825 + 3174 = 99999
96842 + 3157 = 99999
96847 + 3152 = 99999
96852 + 3147 = 99999
96857 + 3142 = 99999
96874 + 3125 = 99999
96875 + 3124 = 99999
97134 + 2865 = 99999
97135 + 2864 = 99999
97143 + 2856 = 99999
97146 + 2853 = 99999
97153 + 2846 = 99999
97156 + 2843 = 99999
97164 + 2835 = 99999
97165 + 2834 = 99999
97314 + 2685 = 99999
97315 + 2684 = 99999
97341 + 2658 = 99999
97348 + 2651 = 99999
97351 + 2648 = 99999
97358 + 2641 = 99999
97384 + 2615 = 99999
97385 + 2614 = 99999
97413 + 2586 = 99999
97416 + 2583 = 99999
97431 + 2568 = 99999
97438 + 2561 = 99999
97461 + 2538 = 99999
97468 + 2531 = 99999
97483 + 2516 = 99999
97486 + 2513 = 99999
97513 + 2486 = 99999
97516 + 2483 = 99999
97531 + 2468 = 99999
97538 + 2461 = 99999
97561 + 2438 = 99999
97568 + 2431 = 99999
97583 + 2416 = 99999
97586 + 2413 = 99999
97614 + 2385 = 99999
97615 + 2384 = 99999
97641 + 2358 = 99999
97648 + 2351 = 99999
97651 + 2348 = 99999
97658 + 2341 = 99999
97684 + 2315 = 99999
97685 + 2314 = 99999
97834 + 2165 = 99999
97835 + 2164 = 99999
97843 + 2156 = 99999
97846 + 2153 = 99999
97853 + 2146 = 99999
97856 + 2143 = 99999
97864 + 2135 = 99999
97865 + 2134 = 99999
98234 + 1765 = 99999
98235 + 1764 = 99999
98243 + 1756 = 99999
98246 + 1753 = 99999
98253 + 1746 = 99999
98256 + 1743 = 99999
98264 + 1735 = 99999
98265 + 1734 = 99999
98324 + 1675 = 99999
98325 + 1674 = 99999
98342 + 1657 = 99999
98347 + 1652 = 99999
98352 + 1647 = 99999
98357 + 1642 = 99999
98374 + 1625 = 99999
98375 + 1624 = 99999
98423 + 1576 = 99999
98426 + 1573 = 99999
98432 + 1567 = 99999
98437 + 1562 = 99999
98462 + 1537 = 99999
98467 + 1532 = 99999
98473 + 1526 = 99999
98476 + 1523 = 99999
98523 + 1476 = 99999
98526 + 1473 = 99999
98532 + 1467 = 99999
98537 + 1462 = 99999
98562 + 1437 = 99999
98567 + 1432 = 99999
98573 + 1426 = 99999
98576 + 1423 = 99999
98624 + 1375 = 99999
98625 + 1374 = 99999
98642 + 1357 = 99999
98647 + 1352 = 99999
98652 + 1347 = 99999
98657 + 1342 = 99999
98674 + 1325 = 99999
98675 + 1324 = 99999
98734 + 1265 = 99999
98735 + 1264 = 99999
98743 + 1256 = 99999
98746 + 1253 = 99999
98753 + 1246 = 99999
98756 + 1243 = 99999
98764 + 1235 = 99999
98765 + 1234 = 99999

2020年8月27日木曜日

200827

Ruby


A336940

60 = 2^2 * 3^1 * 5^1
の約数は、
1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60
であるが、このうち奇数のものは、
1, 3, 5, 15
である。これらは、
15 = 3^1 * 5^1
の約数である。
この考え方を使って、
n! の約数のうち奇数となるものの個数を求めてみた。

require 'prime'

def A(n)
  h = {}
  Prime.each(n * n){|i| h[i] = 1}
  ary0 = []
  ary1 = [1]
  (1..n * n).each{|i|
    i.prime_division.each{|j| h[j[0]] += j[1]}
    ary0 << h[2]
    ary1 << h.values.inject(:*) / h[2]
  }
  p ary0
  p ary1
end

A(15)

出力結果
[1, 2, 2, 4, 4, 5, 5, 8, 8, 9, 9, 11, 11, 12, 12, 16, 16, 17, 17, 19, 19, 20, 20, 23, 23, 24, 24, 26, 26, 27, 27, 32, 32, 33, 33, 35, 35, 36, 36, 39, 39, 40, 40, 42, 42, 43, 43, 47, 47, 48, 48, 50, 50, 51, 51, 54, 54, 55, 55, 57, 57, 58, 58, 64, 64, 65, 65, 67, 67, 68, 68, 71, 71, 72, 72, 74, 74, 75, 75, 79, 79, 80, 80, 82, 82, 83, 83, 86, 86, 87, 87, 89, 89, 90, 90, 95, 95, 96, 96, 98, 98, 99, 99, 102, 102, 103, 103, 105, 105, 106, 106, 110, 110, 111, 111, 113, 113, 114, 114, 117, 117, 118, 118, 120, 120, 121, 121, 128, 128, 129, 129, 131, 131, 132, 132, 135, 135, 136, 136, 138, 138, 139, 139, 143, 143, 144, 144, 146, 146, 147, 147, 150, 150, 151, 151, 153, 153, 154, 154, 159, 159, 160, 160, 162, 162, 163, 163, 166, 166, 167, 167, 169, 169, 170, 170, 174, 174, 175, 175, 177, 177, 178, 178, 181, 181, 182, 182, 184, 184, 185, 185, 191, 191, 192, 192, 194, 194, 195, 195, 198, 198, 199, 199, 201, 201, 202, 202, 206, 206, 207, 207, 209, 209, 210, 210, 213, 213, 214, 214, 216, 216, 217, 217, 222, 222]
[1, 1, 1, 2, 2, 4, 6, 12, 12, 20, 30, 60, 72, 144, 216, 336, 336, 672, 864, 1728, 2160, 3200, 4800, 9600, 10560, 14784, 22176, 28224, 35280, 70560, 86400, 172800, 172800, 245760, 368640, 497664, 559872, 1119744, 1679616, 2363904, 2626560, 5253120, 6451200, 12902400, 16128000, 19514880, 29272320, 58544640, 61205760, 78693120, 93000960, 129392640, 161740800, 323481600, 363916800, 470292480, 522547200, 722534400, 1083801600, 2167603200, 2405376000, 4810752000, 7216128000, 8485171200, 8485171200, 10861019136, 13079937024, 26159874048, 32699842560, 44962283520, 52115374080, 104230748160, 110547763200, 221095526400, 331643289600, 381250437120, 476563046400, 590030438400, 707490201600, 1414980403200, 1489453056000, 1650475008000, 2475712512000, 4951425024000, 5462360064000, 6882573680640, 10323860520960, 14092888965120, 15854500085760, 31709000171520, 34764020121600, 42568187904000, 53210234880000, 72523579392000, 108785369088000, 136476190310400, 139443064012800, 278886128025600, 316070945095680, 366134191718400, 397971947520000, 795943895040000, 947552256000000, 1895104512000000, 2131992576000000, 2394654061363200, 3591981092044800, 7183962184089600, 7606548194918400, 15213096389836800, 17378037029928960, 23599803373977600, 24910903561420800, 49821807122841600, 59182267855011840, 73649044441792512, 92061305552240640, 105943565913292800, 158915348869939200, 191176359542784000, 201417950232576000, 238039395729408000, 357059093594112000, 484147923517440000, 605184904396800000, 667790239334400000, 724552409677824000, 1449104819355648000, 1449104819355648000, 1963303303643136000, 2227122185070182400, 4454244370140364800, 4873019481862963200, 5834363461278105600, 8751545191917158400, 9439403384084889600, 10619328807095500800, 21238657614191001600, 25148261254614220800, 50296522509228441600, 54129278903648256000, 73233730281406464000, 109850595422109696000, 128396799844024320000, 132118446216314880000, 163071910758422937600, 244607866137634406400, 269622877555261440000, 337028596944076800000, 674057193888153600000, 721386827100979200000, 1442773654201958400000, 1623120360977203200000, 1852877124403200000000, 2055458356671283200000, 2531459239268843520000, 2778979698219574886400, 5557959396439149772800, 8336939094658724659200, 11262180882258277171200, 11550954751034130432000, 13708825418809737216000, 14420972193812840448000, 28841944387625680896000, 36052430484532101120000, 39748082791530627072000, 59622124187295940608000, 119244248374591881216000, 125168759359779373056000, 144425491568976199680000, 162742870987480498176000, 185182651056704716800000, 231478313820880896000000, 462956627641761792000000, 546470372235961958400000, 592938941303645798400000, 627817702556801433600000, 846823877867313561600000, 1270235816800970342400000, 2540471633601940684800000, 2657938582177579008000000, 5315877164355158016000000, 5865795491702243328000000, 7908937741621002240000000, 8897554959323627520000000, 10914334083436983091200000, 12874871872498811535360000, 14825610034998631464960000, 18532012543748289331200000, 19781056612630957916160000, 22232187540717837484032000, 44464375081435674968064000, 44937400348259458744320000, 89874800696518917488640000, 134812201044778376232960000, 147825428066122044801024000, 157362552457484757368832000, 314725104914969514737664000, 338191450456875136450560000, 676382900913750272901120000, 704565521785156534272000000, 949006621180006760448000000, 1423509931770010140672000000, 1676167538707544408064000000, 1834190067609265766400000000, 2245048642753741298073600000, 3367572964130611947110400000, 3816582692681360206725120000, 4041087556956734336532480000, 4628882110695895694573568000, 4906089515746503646248960000, 9812179031493007292497920000, 12265223789366259115622400000, 16512404842641954019737600000, 24768607263962931029606400000, 30293911961308507951595520000, 31167774806346253373276160000, 36638037323378452944912384000, 54957055985067679417368576000, 73960897774296690057019392000, 78944785764478407715848192000, 89740653903210497659895808000, 105666850197761743386574848000, 211333700395523486773149696000, 217204080962065805850181632000, 229381679792762665505390592000]

2020年8月16日日曜日

200816

PARI


PARI と OneDrive

\r ○○.gp でファイルを読み込むとき、
ファイルがOneDrive 上にあると読み込めないことに
気づいた。
Windows 10 だと、特に設定し直さないかぎりデスクトップも
OneDrive の下のフォルダになっていることが多いので注意しよう。

2020年8月11日火曜日

200811

Vue.js


select

<select v-model="プロパティ名" multiple>
の複数選択について、
Ctrl を押しながら項目を選ぶというのは不便だと思う。

2020年8月8日土曜日

200808

Ruby


A243631 とA336727

A307883 とA307884 と似た関係式をもつ。

# A307883とA307884
def A(k, n)
  i, a, b = 0, 1, k + 1
  ary = [1]
  while i < n
    i += 1
    a, b = b, ((k + 1) * (2 * i + 1) * b - (k - 1) ** 2 * i * a) / (i + 1)
    ary << a
  end
  ary
end

# A243631とA336727
def B(k, n)
  i, a, b = 0, 1, 1
  ary = [1]
  while i < n
    i += 1
    a, b = b, ((k + 1) * (2 * i + 1) * b - (k - 1) ** 2 * (i - 1) * a) / (i + 2)
    ary << a
  end
  ary
end

n = 10
-10.upto(10){|i| p [i, A(i, n)]}
-10.upto(10){|i| p [i, B(i, n)]}

出力結果
[-10, [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209, 6676401501]]
[-9, [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280, 3005297956]]
[-8, [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207, 1079883553]]
[-7, [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036, 283869972]]
[-6, [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525, 40678573]]
[-5, [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504, -3106124]]
[-4, [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045, -2379519]]
[-3, [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228, -197372]]
[-2, [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479, 13597]]
[-1, [1, 0, -2, 0, 6, 0, -20, 0, 70, 0, -252]]
[0, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
[1, [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620, 184756]]
[2, [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563, 8097453]]
[3, [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544, 98365972]]
[4, [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525, 653808673]]
[5, [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556, 3038019876]]
[6, [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695, 11112210781]]
[7, [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048, 34217133028]]
[8, [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409, 92497952097]]
[9, [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300, 225759595348]]
[10, [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411, 507406003501]]
[-10, [1, 1, -9, 71, -459, 1901, 4851, -214709, 2829321, -25102759, 141253551]]
[-9, [1, 1, -8, 55, -296, 802, 6832, -138941, 1397080, -9274418, 26549776]]
[-8, [1, 1, -7, 41, -175, 177, 6153, -78951, 588833, -2530591, -4090471]]
[-7, [1, 1, -6, 29, -90, -118, 4404, -38219, 194286, -269506, -6250068]]
[-6, [1, 1, -5, 19, -35, -203, 2575, -14705, 38425, 177769, -2904605]]
[-5, [1, 1, -4, 11, -4, -174, 1176, -3729, -3364, 116846, -719224]]
[-4, [1, 1, -3, 5, 9, -103, 357, -131, -5295, 29297, -55539]]
[-3, [1, 1, -2, 1, 10, -38, 28, 289, -1262, 1054, 11044]]
[-2, [1, 1, -1, -1, 5, -3, -21, 51, 41, -391, 407]]
[-1, [1, 1, 0, -1, 0, 2, 0, -5, 0, 14, 0]]
[0, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
[1, [1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796]]
[2, [1, 1, 3, 11, 45, 197, 903, 4279, 20793, 103049, 518859]]
[3, [1, 1, 4, 19, 100, 562, 3304, 20071, 124996, 793774, 5120632]]
[4, [1, 1, 5, 29, 185, 1257, 8925, 65445, 491825, 3768209, 29324405]]
[5, [1, 1, 6, 41, 306, 2426, 20076, 171481, 1500666, 13386206, 121267476]]
[6, [1, 1, 7, 55, 469, 4237, 39907, 387739, 3858505, 39130777, 402972031]]
[7, [1, 1, 8, 71, 680, 6882, 72528, 788019, 8766248, 99362894, 1143498224]]
[8, [1, 1, 9, 89, 945, 10577, 123129, 1476841, 18130401, 226739489, 2878666857]]
[9, [1, 1, 10, 109, 1270, 15562, 198100, 2596645, 34825150, 475697854, 6595646860]]
[10, [1, 1, 11, 131, 1661, 22101, 305151, 4335711, 63009881, 932449961, 14004694451]]

2020年7月25日土曜日

200725

Ruby


Martin Gardner のlucky number について

2187 + 1234 = 3421
2187 + 12345 = 14532
2187 + 123456 = 125643
2187 + 1234567 = 1236754
2187 + 12345678 = 12347865
2187 + 123456789 = 123458976
のうち、
2187 + 1234 = 3421
2187 + 2345 = 4532
2187 + 3456 = 5643
2187 + 4567 = 6754
2187 + 5678 = 7865
2187 + 6789 = 8976
の部分が大事だと思うので、このような数字を見つけてみた。

def A(digit)
  ary = []
  (10 ** (digit - 1)..10 ** digit - 1).each{|i|
    flag = true
    (1..10 - digit).each{|j|
      a = (j..j + digit - 1).to_a
      k = a.join.to_i
      l = i + k
      if l.to_s.split('').map(&:to_i).sort != a
        flag = false
        break
      end
    }
    ary << i if flag
  }
  ary
end

def B(ary, digit)
  p ary
  puts
  ary.each{|i|
    (1..10 - digit).each{|j|
      k = (j..j + digit - 1).to_a.join.to_i
      puts "#{i} + #{k} = #{i + k}"
    }
    puts "-" * (digit * 3 + 6)
  }
end

(1..5).each{|i| B(A(i), i)}

出力結果
[]

[]

[108, 189, 198]

108 + 123 = 231
108 + 234 = 342
108 + 345 = 453
108 + 456 = 564
108 + 567 = 675
108 + 678 = 786
108 + 789 = 897
---------------
189 + 123 = 312
189 + 234 = 423
189 + 345 = 534
189 + 456 = 645
189 + 567 = 756
189 + 678 = 867
189 + 789 = 978
---------------
198 + 123 = 321
198 + 234 = 432
198 + 345 = 543
198 + 456 = 654
198 + 567 = 765
198 + 678 = 876
198 + 789 = 987
---------------
[1080, 1107, 1179, 1197, 1890, 1908, 1980, 2007, 2178, 2187, 2889, 2898, 2979, 2997, 3078, 3087]

1080 + 1234 = 2314
1080 + 2345 = 3425
1080 + 3456 = 4536
1080 + 4567 = 5647
1080 + 5678 = 6758
1080 + 6789 = 7869
------------------
1107 + 1234 = 2341
1107 + 2345 = 3452
1107 + 3456 = 4563
1107 + 4567 = 5674
1107 + 5678 = 6785
1107 + 6789 = 7896
------------------
1179 + 1234 = 2413
1179 + 2345 = 3524
1179 + 3456 = 4635
1179 + 4567 = 5746
1179 + 5678 = 6857
1179 + 6789 = 7968
------------------
1197 + 1234 = 2431
1197 + 2345 = 3542
1197 + 3456 = 4653
1197 + 4567 = 5764
1197 + 5678 = 6875
1197 + 6789 = 7986
------------------
1890 + 1234 = 3124
1890 + 2345 = 4235
1890 + 3456 = 5346
1890 + 4567 = 6457
1890 + 5678 = 7568
1890 + 6789 = 8679
------------------
1908 + 1234 = 3142
1908 + 2345 = 4253
1908 + 3456 = 5364
1908 + 4567 = 6475
1908 + 5678 = 7586
1908 + 6789 = 8697
------------------
1980 + 1234 = 3214
1980 + 2345 = 4325
1980 + 3456 = 5436
1980 + 4567 = 6547
1980 + 5678 = 7658
1980 + 6789 = 8769
------------------
2007 + 1234 = 3241
2007 + 2345 = 4352
2007 + 3456 = 5463
2007 + 4567 = 6574
2007 + 5678 = 7685
2007 + 6789 = 8796
------------------
2178 + 1234 = 3412
2178 + 2345 = 4523
2178 + 3456 = 5634
2178 + 4567 = 6745
2178 + 5678 = 7856
2178 + 6789 = 8967
------------------
2187 + 1234 = 3421
2187 + 2345 = 4532
2187 + 3456 = 5643
2187 + 4567 = 6754
2187 + 5678 = 7865
2187 + 6789 = 8976
------------------
2889 + 1234 = 4123
2889 + 2345 = 5234
2889 + 3456 = 6345
2889 + 4567 = 7456
2889 + 5678 = 8567
2889 + 6789 = 9678
------------------
2898 + 1234 = 4132
2898 + 2345 = 5243
2898 + 3456 = 6354
2898 + 4567 = 7465
2898 + 5678 = 8576
2898 + 6789 = 9687
------------------
2979 + 1234 = 4213
2979 + 2345 = 5324
2979 + 3456 = 6435
2979 + 4567 = 7546
2979 + 5678 = 8657
2979 + 6789 = 9768
------------------
2997 + 1234 = 4231
2997 + 2345 = 5342
2997 + 3456 = 6453
2997 + 4567 = 7564
2997 + 5678 = 8675
2997 + 6789 = 9786
------------------
3078 + 1234 = 4312
3078 + 2345 = 5423
3078 + 3456 = 6534
3078 + 4567 = 7645
3078 + 5678 = 8756
3078 + 6789 = 9867
------------------
3087 + 1234 = 4321
3087 + 2345 = 5432
3087 + 3456 = 6543
3087 + 4567 = 7654
3087 + 5678 = 8765
3087 + 6789 = 9876
------------------
[10800, 10809, 11070, 11106, 11169, 11196, 11790, 11808, 11970, 12006, 12168, 12186, 12789, 12798, 12969, 12996, 13068, 13086, 18900, 18909, 19080, 19107, 19179, 19197, 19800, 19809, 20070, 20106, 20169, 20196, 21780, 21807, 21870, 21906, 22167, 22176, 22779, 22797, 22869, 22896, 23067, 23076, 28890, 28908, 28980, 29007, 29178, 29187, 29790, 29808, 29970, 30006, 30168, 30186, 30780, 30807, 30870, 30906, 31167, 31176, 32778, 32787, 32868, 32886, 32967, 32976, 38889, 38898, 38979, 38997, 39078, 39087, 39789, 39798, 39969, 39996, 40068, 40086, 40779, 40797, 40869, 40896, 41067, 41076, 41778, 41787, 41868, 41886, 41967, 41976]

10800 + 12345 = 23145
10800 + 23456 = 34256
10800 + 34567 = 45367
10800 + 45678 = 56478
10800 + 56789 = 67589
---------------------
10809 + 12345 = 23154
10809 + 23456 = 34265
10809 + 34567 = 45376
10809 + 45678 = 56487
10809 + 56789 = 67598
---------------------
11070 + 12345 = 23415
11070 + 23456 = 34526
11070 + 34567 = 45637
11070 + 45678 = 56748
11070 + 56789 = 67859
---------------------
11106 + 12345 = 23451
11106 + 23456 = 34562
11106 + 34567 = 45673
11106 + 45678 = 56784
11106 + 56789 = 67895
---------------------
11169 + 12345 = 23514
11169 + 23456 = 34625
11169 + 34567 = 45736
11169 + 45678 = 56847
11169 + 56789 = 67958
---------------------
11196 + 12345 = 23541
11196 + 23456 = 34652
11196 + 34567 = 45763
11196 + 45678 = 56874
11196 + 56789 = 67985
---------------------
11790 + 12345 = 24135
11790 + 23456 = 35246
11790 + 34567 = 46357
11790 + 45678 = 57468
11790 + 56789 = 68579
---------------------
11808 + 12345 = 24153
11808 + 23456 = 35264
11808 + 34567 = 46375
11808 + 45678 = 57486
11808 + 56789 = 68597
---------------------
11970 + 12345 = 24315
11970 + 23456 = 35426
11970 + 34567 = 46537
11970 + 45678 = 57648
11970 + 56789 = 68759
---------------------
12006 + 12345 = 24351
12006 + 23456 = 35462
12006 + 34567 = 46573
12006 + 45678 = 57684
12006 + 56789 = 68795
---------------------
12168 + 12345 = 24513
12168 + 23456 = 35624
12168 + 34567 = 46735
12168 + 45678 = 57846
12168 + 56789 = 68957
---------------------
12186 + 12345 = 24531
12186 + 23456 = 35642
12186 + 34567 = 46753
12186 + 45678 = 57864
12186 + 56789 = 68975
---------------------
12789 + 12345 = 25134
12789 + 23456 = 36245
12789 + 34567 = 47356
12789 + 45678 = 58467
12789 + 56789 = 69578
---------------------
12798 + 12345 = 25143
12798 + 23456 = 36254
12798 + 34567 = 47365
12798 + 45678 = 58476
12798 + 56789 = 69587
---------------------
12969 + 12345 = 25314
12969 + 23456 = 36425
12969 + 34567 = 47536
12969 + 45678 = 58647
12969 + 56789 = 69758
---------------------
12996 + 12345 = 25341
12996 + 23456 = 36452
12996 + 34567 = 47563
12996 + 45678 = 58674
12996 + 56789 = 69785
---------------------
13068 + 12345 = 25413
13068 + 23456 = 36524
13068 + 34567 = 47635
13068 + 45678 = 58746
13068 + 56789 = 69857
---------------------
13086 + 12345 = 25431
13086 + 23456 = 36542
13086 + 34567 = 47653
13086 + 45678 = 58764
13086 + 56789 = 69875
---------------------
18900 + 12345 = 31245
18900 + 23456 = 42356
18900 + 34567 = 53467
18900 + 45678 = 64578
18900 + 56789 = 75689
---------------------
18909 + 12345 = 31254
18909 + 23456 = 42365
18909 + 34567 = 53476
18909 + 45678 = 64587
18909 + 56789 = 75698
---------------------
19080 + 12345 = 31425
19080 + 23456 = 42536
19080 + 34567 = 53647
19080 + 45678 = 64758
19080 + 56789 = 75869
---------------------
19107 + 12345 = 31452
19107 + 23456 = 42563
19107 + 34567 = 53674
19107 + 45678 = 64785
19107 + 56789 = 75896
---------------------
19179 + 12345 = 31524
19179 + 23456 = 42635
19179 + 34567 = 53746
19179 + 45678 = 64857
19179 + 56789 = 75968
---------------------
19197 + 12345 = 31542
19197 + 23456 = 42653
19197 + 34567 = 53764
19197 + 45678 = 64875
19197 + 56789 = 75986
---------------------
19800 + 12345 = 32145
19800 + 23456 = 43256
19800 + 34567 = 54367
19800 + 45678 = 65478
19800 + 56789 = 76589
---------------------
19809 + 12345 = 32154
19809 + 23456 = 43265
19809 + 34567 = 54376
19809 + 45678 = 65487
19809 + 56789 = 76598
---------------------
20070 + 12345 = 32415
20070 + 23456 = 43526
20070 + 34567 = 54637
20070 + 45678 = 65748
20070 + 56789 = 76859
---------------------
20106 + 12345 = 32451
20106 + 23456 = 43562
20106 + 34567 = 54673
20106 + 45678 = 65784
20106 + 56789 = 76895
---------------------
20169 + 12345 = 32514
20169 + 23456 = 43625
20169 + 34567 = 54736
20169 + 45678 = 65847
20169 + 56789 = 76958
---------------------
20196 + 12345 = 32541
20196 + 23456 = 43652
20196 + 34567 = 54763
20196 + 45678 = 65874
20196 + 56789 = 76985
---------------------
21780 + 12345 = 34125
21780 + 23456 = 45236
21780 + 34567 = 56347
21780 + 45678 = 67458
21780 + 56789 = 78569
---------------------
21807 + 12345 = 34152
21807 + 23456 = 45263
21807 + 34567 = 56374
21807 + 45678 = 67485
21807 + 56789 = 78596
---------------------
21870 + 12345 = 34215
21870 + 23456 = 45326
21870 + 34567 = 56437
21870 + 45678 = 67548
21870 + 56789 = 78659
---------------------
21906 + 12345 = 34251
21906 + 23456 = 45362
21906 + 34567 = 56473
21906 + 45678 = 67584
21906 + 56789 = 78695
---------------------
22167 + 12345 = 34512
22167 + 23456 = 45623
22167 + 34567 = 56734
22167 + 45678 = 67845
22167 + 56789 = 78956
---------------------
22176 + 12345 = 34521
22176 + 23456 = 45632
22176 + 34567 = 56743
22176 + 45678 = 67854
22176 + 56789 = 78965
---------------------
22779 + 12345 = 35124
22779 + 23456 = 46235
22779 + 34567 = 57346
22779 + 45678 = 68457
22779 + 56789 = 79568
---------------------
22797 + 12345 = 35142
22797 + 23456 = 46253
22797 + 34567 = 57364
22797 + 45678 = 68475
22797 + 56789 = 79586
---------------------
22869 + 12345 = 35214
22869 + 23456 = 46325
22869 + 34567 = 57436
22869 + 45678 = 68547
22869 + 56789 = 79658
---------------------
22896 + 12345 = 35241
22896 + 23456 = 46352
22896 + 34567 = 57463
22896 + 45678 = 68574
22896 + 56789 = 79685
---------------------
23067 + 12345 = 35412
23067 + 23456 = 46523
23067 + 34567 = 57634
23067 + 45678 = 68745
23067 + 56789 = 79856
---------------------
23076 + 12345 = 35421
23076 + 23456 = 46532
23076 + 34567 = 57643
23076 + 45678 = 68754
23076 + 56789 = 79865
---------------------
28890 + 12345 = 41235
28890 + 23456 = 52346
28890 + 34567 = 63457
28890 + 45678 = 74568
28890 + 56789 = 85679
---------------------
28908 + 12345 = 41253
28908 + 23456 = 52364
28908 + 34567 = 63475
28908 + 45678 = 74586
28908 + 56789 = 85697
---------------------
28980 + 12345 = 41325
28980 + 23456 = 52436
28980 + 34567 = 63547
28980 + 45678 = 74658
28980 + 56789 = 85769
---------------------
29007 + 12345 = 41352
29007 + 23456 = 52463
29007 + 34567 = 63574
29007 + 45678 = 74685
29007 + 56789 = 85796
---------------------
29178 + 12345 = 41523
29178 + 23456 = 52634
29178 + 34567 = 63745
29178 + 45678 = 74856
29178 + 56789 = 85967
---------------------
29187 + 12345 = 41532
29187 + 23456 = 52643
29187 + 34567 = 63754
29187 + 45678 = 74865
29187 + 56789 = 85976
---------------------
29790 + 12345 = 42135
29790 + 23456 = 53246
29790 + 34567 = 64357
29790 + 45678 = 75468
29790 + 56789 = 86579
---------------------
29808 + 12345 = 42153
29808 + 23456 = 53264
29808 + 34567 = 64375
29808 + 45678 = 75486
29808 + 56789 = 86597
---------------------
29970 + 12345 = 42315
29970 + 23456 = 53426
29970 + 34567 = 64537
29970 + 45678 = 75648
29970 + 56789 = 86759
---------------------
30006 + 12345 = 42351
30006 + 23456 = 53462
30006 + 34567 = 64573
30006 + 45678 = 75684
30006 + 56789 = 86795
---------------------
30168 + 12345 = 42513
30168 + 23456 = 53624
30168 + 34567 = 64735
30168 + 45678 = 75846
30168 + 56789 = 86957
---------------------
30186 + 12345 = 42531
30186 + 23456 = 53642
30186 + 34567 = 64753
30186 + 45678 = 75864
30186 + 56789 = 86975
---------------------
30780 + 12345 = 43125
30780 + 23456 = 54236
30780 + 34567 = 65347
30780 + 45678 = 76458
30780 + 56789 = 87569
---------------------
30807 + 12345 = 43152
30807 + 23456 = 54263
30807 + 34567 = 65374
30807 + 45678 = 76485
30807 + 56789 = 87596
---------------------
30870 + 12345 = 43215
30870 + 23456 = 54326
30870 + 34567 = 65437
30870 + 45678 = 76548
30870 + 56789 = 87659
---------------------
30906 + 12345 = 43251
30906 + 23456 = 54362
30906 + 34567 = 65473
30906 + 45678 = 76584
30906 + 56789 = 87695
---------------------
31167 + 12345 = 43512
31167 + 23456 = 54623
31167 + 34567 = 65734
31167 + 45678 = 76845
31167 + 56789 = 87956
---------------------
31176 + 12345 = 43521
31176 + 23456 = 54632
31176 + 34567 = 65743
31176 + 45678 = 76854
31176 + 56789 = 87965
---------------------
32778 + 12345 = 45123
32778 + 23456 = 56234
32778 + 34567 = 67345
32778 + 45678 = 78456
32778 + 56789 = 89567
---------------------
32787 + 12345 = 45132
32787 + 23456 = 56243
32787 + 34567 = 67354
32787 + 45678 = 78465
32787 + 56789 = 89576
---------------------
32868 + 12345 = 45213
32868 + 23456 = 56324
32868 + 34567 = 67435
32868 + 45678 = 78546
32868 + 56789 = 89657
---------------------
32886 + 12345 = 45231
32886 + 23456 = 56342
32886 + 34567 = 67453
32886 + 45678 = 78564
32886 + 56789 = 89675
---------------------
32967 + 12345 = 45312
32967 + 23456 = 56423
32967 + 34567 = 67534
32967 + 45678 = 78645
32967 + 56789 = 89756
---------------------
32976 + 12345 = 45321
32976 + 23456 = 56432
32976 + 34567 = 67543
32976 + 45678 = 78654
32976 + 56789 = 89765
---------------------
38889 + 12345 = 51234
38889 + 23456 = 62345
38889 + 34567 = 73456
38889 + 45678 = 84567
38889 + 56789 = 95678
---------------------
38898 + 12345 = 51243
38898 + 23456 = 62354
38898 + 34567 = 73465
38898 + 45678 = 84576
38898 + 56789 = 95687
---------------------
38979 + 12345 = 51324
38979 + 23456 = 62435
38979 + 34567 = 73546
38979 + 45678 = 84657
38979 + 56789 = 95768
---------------------
38997 + 12345 = 51342
38997 + 23456 = 62453
38997 + 34567 = 73564
38997 + 45678 = 84675
38997 + 56789 = 95786
---------------------
39078 + 12345 = 51423
39078 + 23456 = 62534
39078 + 34567 = 73645
39078 + 45678 = 84756
39078 + 56789 = 95867
---------------------
39087 + 12345 = 51432
39087 + 23456 = 62543
39087 + 34567 = 73654
39087 + 45678 = 84765
39087 + 56789 = 95876
---------------------
39789 + 12345 = 52134
39789 + 23456 = 63245
39789 + 34567 = 74356
39789 + 45678 = 85467
39789 + 56789 = 96578
---------------------
39798 + 12345 = 52143
39798 + 23456 = 63254
39798 + 34567 = 74365
39798 + 45678 = 85476
39798 + 56789 = 96587
---------------------
39969 + 12345 = 52314
39969 + 23456 = 63425
39969 + 34567 = 74536
39969 + 45678 = 85647
39969 + 56789 = 96758
---------------------
39996 + 12345 = 52341
39996 + 23456 = 63452
39996 + 34567 = 74563
39996 + 45678 = 85674
39996 + 56789 = 96785
---------------------
40068 + 12345 = 52413
40068 + 23456 = 63524
40068 + 34567 = 74635
40068 + 45678 = 85746
40068 + 56789 = 96857
---------------------
40086 + 12345 = 52431
40086 + 23456 = 63542
40086 + 34567 = 74653
40086 + 45678 = 85764
40086 + 56789 = 96875
---------------------
40779 + 12345 = 53124
40779 + 23456 = 64235
40779 + 34567 = 75346
40779 + 45678 = 86457
40779 + 56789 = 97568
---------------------
40797 + 12345 = 53142
40797 + 23456 = 64253
40797 + 34567 = 75364
40797 + 45678 = 86475
40797 + 56789 = 97586
---------------------
40869 + 12345 = 53214
40869 + 23456 = 64325
40869 + 34567 = 75436
40869 + 45678 = 86547
40869 + 56789 = 97658
---------------------
40896 + 12345 = 53241
40896 + 23456 = 64352
40896 + 34567 = 75463
40896 + 45678 = 86574
40896 + 56789 = 97685
---------------------
41067 + 12345 = 53412
41067 + 23456 = 64523
41067 + 34567 = 75634
41067 + 45678 = 86745
41067 + 56789 = 97856
---------------------
41076 + 12345 = 53421
41076 + 23456 = 64532
41076 + 34567 = 75643
41076 + 45678 = 86754
41076 + 56789 = 97865
---------------------
41778 + 12345 = 54123
41778 + 23456 = 65234
41778 + 34567 = 76345
41778 + 45678 = 87456
41778 + 56789 = 98567
---------------------
41787 + 12345 = 54132
41787 + 23456 = 65243
41787 + 34567 = 76354
41787 + 45678 = 87465
41787 + 56789 = 98576
---------------------
41868 + 12345 = 54213
41868 + 23456 = 65324
41868 + 34567 = 76435
41868 + 45678 = 87546
41868 + 56789 = 98657
---------------------
41886 + 12345 = 54231
41886 + 23456 = 65342
41886 + 34567 = 76453
41886 + 45678 = 87564
41886 + 56789 = 98675
---------------------
41967 + 12345 = 54312
41967 + 23456 = 65423
41967 + 34567 = 76534
41967 + 45678 = 87645
41967 + 56789 = 98756
---------------------
41976 + 12345 = 54321
41976 + 23456 = 65432
41976 + 34567 = 76543
41976 + 45678 = 87654
41976 + 56789 = 98765
---------------------

2020年7月23日木曜日

200723

PARI


A307883 とA307884

diagonal of the rational function R(r, k) = r / ((1-r*x)*(1-r*y) + r-1 - (k+r-1)*r*x*y)
がr (≠0) の値に依存しないことは、以下のように展開すれば確認できる。
R(r, k)
= r / ((1-r*x-r*y+r^2*x*y) + r-1 - (k+r-1)*r*x*y)
= r / (r * (1-x-y-(k-1)*x*y))
= 1 / ((1-x)*(1-y) - k*x*y)
= R(1, k)

実際計算でも確かめてみた。

(00:00) gp > N=10;
(00:00) gp > diag(n, expr, var=variables(expr)) = {
  my(a=vector(n));
  for(i=1, #var, expr=taylor(expr, var[#var-i+1], n));
  for(j=1, n, a[j]=expr;
    for(i=1, #var, a[j]=polcoeff(a[j], j-1)));
  return(a);
};
(00:00) gp > R(r, k) = r/((1-r*x)*(1-r*y)+r-1-(k+r-1)*r*x*y);
(00:00) gp > for(k=-10, 10, for(r=-5, 5, if(r!=0, print("(r,k) = (", r, ",", k, ") ", diag(N, R(r, k))))))
(r,k) = (-5,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (-4,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (-3,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (-2,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (-1,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (1,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (2,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (3,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (4,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (5,-10) [1, -9, 61, -189, -2559, 59751, -727859, 5968611, -23658239, -239767209]
(r,k) = (-5,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (-4,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (-3,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (-2,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (-1,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (1,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (2,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (3,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (4,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (5,-9) [1, -8, 46, -80, -2330, 39952, -391796, 2396512, -1665530, -187855280]
(r,k) = (-5,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (-4,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (-3,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (-2,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (-1,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (1,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (2,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (3,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (4,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (5,-8) [1, -7, 33, -7, -1919, 24633, -186591, 715449, 3834369, -102211207]
(r,k) = (-5,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (-4,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (-3,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (-2,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (-1,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (1,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (2,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (3,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (4,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (5,-7) [1, -6, 22, 36, -1434, 13644, -73604, 71688, 3315334, -41652036]
(r,k) = (-5,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (-4,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (-3,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (-2,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (-1,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (1,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (2,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (3,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (4,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (5,-6) [1, -5, 13, 55, -959, 6475, -20195, -84425, 1657345, -11975525]
(r,k) = (-5,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (-4,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (-3,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (-2,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (-1,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (1,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (2,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (3,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (4,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (5,-5) [1, -4, 6, 56, -554, 2376, -804, -67344, 530406, -1852504]
(r,k) = (-5,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (-4,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (-3,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (-2,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (-1,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (1,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (2,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (3,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (4,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (5,-4) [1, -3, 1, 45, -255, 477, 2689, -25203, 82945, 90045]
(r,k) = (-5,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (-4,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (-3,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (-2,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (-1,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (1,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (2,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (3,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (4,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (5,-3) [1, -2, -2, 28, -74, -92, 1324, -3656, -4826, 70228]
(r,k) = (-5,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (-4,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (-3,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (-2,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (-1,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (1,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (2,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (3,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (4,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (5,-2) [1, -1, -3, 11, 1, -81, 141, 363, -1791, 479]
(r,k) = (-5,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (-4,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (-3,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (-2,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (-1,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (1,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (2,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (3,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (4,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (5,-1) [1, 0, -2, 0, 6, 0, -20, 0, 70, 0]
(r,k) = (-5,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (-4,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (-3,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (-2,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (-1,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (1,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (2,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (3,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (4,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (5,0) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
(r,k) = (-5,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (-4,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (-3,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (-2,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (-1,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (1,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (2,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (3,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (4,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (5,1) [1, 2, 6, 20, 70, 252, 924, 3432, 12870, 48620]
(r,k) = (-5,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (-4,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (-3,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (-2,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (-1,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (1,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (2,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (3,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (4,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (5,2) [1, 3, 13, 63, 321, 1683, 8989, 48639, 265729, 1462563]
(r,k) = (-5,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (-4,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (-3,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (-2,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (-1,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (1,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (2,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (3,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (4,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (5,3) [1, 4, 22, 136, 886, 5944, 40636, 281488, 1968934, 13875544]
(r,k) = (-5,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (-4,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (-3,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (-2,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (-1,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (1,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (2,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (3,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (4,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (5,4) [1, 5, 33, 245, 1921, 15525, 127905, 1067925, 9004545, 76499525]
(r,k) = (-5,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (-4,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (-3,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (-2,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (-1,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (1,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (2,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (3,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (4,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (5,5) [1, 6, 46, 396, 3606, 33876, 324556, 3151896, 30915046, 305543556]
(r,k) = (-5,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (-4,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (-3,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (-2,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (-1,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (1,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (2,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (3,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (4,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (5,6) [1, 7, 61, 595, 6145, 65527, 712909, 7863667, 87615745, 983726695]
(r,k) = (-5,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (-4,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (-3,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (-2,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (-1,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (1,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (2,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (3,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (4,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (5,7) [1, 8, 78, 848, 9766, 116208, 1411404, 17383584, 216294534, 2712176048]
(r,k) = (-5,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (-4,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (-3,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (-2,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (-1,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (1,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (2,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (3,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (4,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (5,8) [1, 9, 97, 1161, 14721, 192969, 2582881, 35066313, 481003009, 6649718409]
(r,k) = (-5,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (-4,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (-3,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (-2,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (-1,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (1,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (2,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (3,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (4,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (5,9) [1, 10, 118, 1540, 21286, 304300, 4443580, 65830600, 985483270, 14869654300]
(r,k) = (-5,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(r,k) = (-4,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(r,k) = (-3,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(r,k) = (-2,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(r,k) = (-1,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(r,k) = (1,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(r,k) = (2,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(r,k) = (3,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(r,k) = (4,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(r,k) = (5,10) [1, 11, 141, 1991, 29761, 460251, 7272861, 116619591, 1889815041, 30869546411]
(00:00) gp >