for n inrange(100): for m inrange(100): if m * (m + 1) / 2 + (2 * delta + beta) * n * (n - 1) / 2 - (1 - beta) * m * n <= 0and\ m == int((1 - beta) * n): print(n, m)
N = 92284623415374411007644319911187454073302916220773084520687398568204575736103577587622077662739571560529359355177065258271068496365935493382545408516144063063049806652690881915097371144333087433501584087114228239197670807222644484253894764278496478161337997072967206470780221778774219335270911364550670519109964693815345153226555099828531599562623418123027778587314183687211776679323301867186995594357300626738665870121396947849232825876530546411681481549099794727910583034225481370104547602468198477742924117851585832141984400713673175114796407557306652309608022274516285414661511527797352730584005354656905934178717528837570490485144833580575700887974843938370488795782063598650599598276414598962913644318305185912440032914739378304647850986396314690288637870325638420444113019196006062250686047914712810844704797832202140610424829554069863447199793317415249328441428355504453381288543932040699415254084656117994994094339827219674532660717448652812298086526313240605954726572984100184354634936451863017312751058329540442848235825461211675869449259952063923383541897392875472456546527118638872481672653429149496186122384798221245996082487862264927546450734661477178793636908163119192791522533902648887196423095431575895368157982157876690338867418193194636492069189272182607374737756671276086131830691995956955426883182725215494218491302084230163753172002708313243324121178110497082650145504906671087063152911767269295252376104672475682067306166899754414224727211729596122052548449628054795217785054715033 e = 8024358580527155334290877801674251879959506867714915253412668990984292235341767665786765488993359337702032275852395386286378942900511396887365780518478129272199554726853491689668741282563473284080650346455657566800004226956434591813749529773142001984587933102828092701230305436992554784864715635534419823255227823372893383270427435341908991564833313542721701123574388105681729962319844498573465225304231839691631988151233095612981147004681192788108110717393989029443598494915790685854734962433893923448360189978667704960829978867287603046024585958164820152075171932859941597691112191381889085909153077670421894121019542714705136554434373635872615948507594280113513171528038575849984396019312585375978684114197168562895181333744517460697443014906160568229295902765416163347299702369222260196155250940336178655660519090403024021887520617234693757199960651828022447343969647099780802273230389300813986084895623073273647754310912967929890941348778909670318887440443037394827110130373286115879434878442245675125910500584829331917016095599667772757926732231845368609048075463496653520745818603544801358877262633800601575926105391617050806604166467070684879462020009998101366355585704601197770758513663948754457374645839019878069074374544090327979180227853597077812774849991992873695730062298491319840110246164247337384996019316033261455760747781231531704714258018620270440727916264334780330695680302082137497778725648378006928146333731092977883476546371441438469936633142681354566485780510065061021388679239651 c = 24368905075419807632187757894297346245856502932568423202202856680232483846993836746343145406920076731085948702936414522429672550063992990638111471751460789319352306281240355010664862129897945593355978560363733727108746092951707570814460091660210824135158115720739532997165697058741723987010633953619686414424830298640909976767043025925400612010821217777971650650311370681666765268918324395269648565293302503449380094898552170092866294731002099953696971201871294241449476031823128664048185710157989016372635635951688027341536254852048199708008879380496514315368925618887873373101893352584222049030981354132120633302729938481664860632868846880826219560154228345646418707030438407952209777209464787215474517245682785880252095053848254245109311836587947986430186027701770682151014814737155265507444830458328923154738731223161378747732281936591177393643746506986213705615114015497383336361210830220341072134772388402301883810356620711154954187230978444521027125290106213556230758493325201635251738639753927079761807115232874848700809571259912097052031318265421247753294475383541194848368593506946510747954823508492357240217637907669393374877664529737114047576893606289170127952791165204447504045167072934238020708131880147728232802615404750289313879051803116940401374721453030702995443517986935377578399419695559272897765440203175040557041771095258416863357916004509025912561708780279833666232786876466247451372495478621363554563777506459096140926278815984798230100485933393004878743838955666904065461978076252
# for n in range(100): # for m in range(100): # if m * (m + 1) / 2 + (2 * delta + beta) * n * (n - 1) / 2 - (1 - beta) * m * n <= 0 and\ # m == int((1 - beta) * n): # print(n, m) # 0 0 # 1 0 # 28 17 # 29 18 # 30 18
# yanghui triangle defgetC(Scale): C=[[0for __ inrange(Scale)] for _ inrange(Scale)] for i inrange(Scale): for j inrange(Scale): if i==j or j==0: C[i][j]=1 else: C[i][j]=C[i-1][j-1]+C[i-1][j] return C
defgetMatrix(Scale,Mvalue,N,E,Del,Bet): M=[[0for __ inrange(Scale)] for _ inrange(Scale)] C=getC(Scale) X,Y=int(pow(N,Del)*(Scale+1)/2),int(pow(N,(Del+Bet))*(Scale+1)/2) for i inrange(Scale): for j inrange(Scale): M[i][j]=N**max(Mvalue-i,0)*E**(max(i-j,0))*X**(Scale-1-j)*Y**j*C[i][j]*(-1)**j return M
p = [] X = int(pow(N,delta)*(Scale+1)/2) Y = int(pow(N,(delta+beta))*(Scale+1)/2) for i inrange(Scale): p.append(A[i]//(X**(Scale-1-i)*Y**i)) PR.<x,y>=PolynomialRing(ZZ) f=0 for i inrange(Scale): f+=p[i]*x^(Scale-1-i)*y^i #f=p[0]*x^4+p[1]*x^3*y+p[2]*x^2*y^2+p[3]*x*y^3+p[4]*y^4 print(f.factor()) # extract from the factorization # 250292684853109062422762009014838507801551186915547622107878320666544145201717444945784117574013634648728418170888678372382969831884303023315772302709090507191757138602583610493148685517900050634640052359194739453651365670210389175816456648757912801502148161310253045805242385579273328097132325492951208346192211822359196413689211194817256850128186995353937605375764130172330297712002569983583733402837208773205105656440965472507453570535761283587220457272091647022578072425029498450582587734914013823649569433668969336501513097537762722144022089485388366353557603284514 # *x + 194454984906921*y dp = 194454984906921 k = 250292684853109062422762009014838507801551186915547622107878320666544145201717444945784117574013634648728418170888678372382969831884303023315772302709090507191757138602583610493148685517900050634640052359194739453651365670210389175816456648757912801502148161310253045805242385579273328097132325492951208346192211822359196413689211194817256850128186995353937605375764130172330297712002569983583733402837208773205105656440965472507453570535761283587220457272091647022578072425029498450582587734914013823649569433668969336501513097537762722144022089485388366353557603284514 p = (e * dp - 1) // (k + 1) + 1 q = N // p assert p * q == N print(bytes.fromhex(hex(pow(c, pow(e, -1, N-p-q+1), N))[2:])) # b'NSSCTF{4522da80-15f9-4922-9010-9abd6d3f7241}'