flag = b'**************************************' m1, m2 = bytes_to_long(flag[:19]), bytes_to_long(flag[19:]) p = next_prime(padding(m1, m1.bit_length())) q = next_prime(padding(m2, m2.bit_length())) n = p * q e = getPrime(128) d = inverse(e, (p - 1) * (q-1)) a, b = e & 0x3ffffffffff, e >> 42 N = getPrime(128) E = EllipticCurve(Zmod(N), [a, b]) NN = getPrime(1024) S = inverse(getPrime(128), NN) * inverse(getPrime(128), NN) d1 = d >> 512 d2 = d & (1 << 512) - 1 enc1 = S * d1 % NN enc2 = S * d2 % NN
import random import gmpy2 defdivide_pq(e, d, n): k = e*d - 1 whileTrue: g = random.randint(2, n-1) t = k whileTrue: if t % 2 != 0: break t //= 2 x = pow(g, t, n) if x > 1and gmpy2.gcd(x-1, n) > 1: p = gmpy2.gcd(x-1, n) return (p, n//p)
n = 117749279680045360245987277946945707343578937283621512842997606104123872211782263906911929773756533011817679794905642225389185861207256322349591633257348367854563703050789889773031032949742664695416275919382068347995088593380486820784360816053546651916291080971628354468517506190756456913824397593128781030749 a = 1755716071599 N = 236038564943567983056828121309828109017 Px, Py = (996, 151729833458737979764886336489671975339) enc1 = 98662590652068949920571979585725979127266112216583776160769090971169664292493813021843624362593669574513220457664819153878956311077379392531742253343961645534972639309537402874636739745717765969720117162780620981639015788423324884640935466801234207019510919768602974162878323777374364290185048275714332671356 enc2 = 58738699705013897273174837829098879580829898980458718341881900446701910685043213698485036350888862454440118347362218485065377354137391792039111639199258042591959084091242821874819864955504791788260187064338245516327147327866373690756260239728218244294166383516151782123688633986853602732137707507845681977204 NN = 149794788177729409820185150543033616327574456754306207341321223589733698623477041345453230785413920341465642754285280273761269552897080096162195035057667200692677841848045965505750839903359478511509753781737513122660495056746669041957643882516287304836822410136985711091802722010788615177574143908444311475347
F = Zmod(N) b = int(F(Py^2 - (Px^3 + a*Px))) e = 2^42 * b + a
from base64 import b64decode from math import ceil
N = int(input())
for c inrange(N): k, b = input().split(' ') h = list(b64decode(b.encode())) if k == '0': for i inrange(ceil(len(h)/16)): ind = hex(i*16)[2:].rjust(8,'0') hh = h[16*i:16*(i+1)] hh1 = ' '.join([hex(j)[2:].rjust(2,'0') for j in hh[:8]] + [' ']*(8-len(hh[:8]))) hh2 = ' '.join([hex(j)[2:].rjust(2,'0') for j in hh[8:]] + [' ']*(8-len(hh[8:]))) ch1 = ''.join([chr(j) if j inrange(32,127) else'.'for j in hh[:8]]).ljust(8,' ') ch2 = ''.join([chr(j) if j inrange(32,127) else'.'for j in hh[8:]]).ljust(8,' ') print(f'{ind}{hh1}{hh2}{ch1}{ch2}') else: for i inrange(ceil(len(h)/16)): ind = hex(i*16)[2:].rjust(8,'0') hh = h[16*i:16*(i+1)] hh1 = ' '.join([hex(j)[2:].rjust(2,'0') for j in hh[:8]] + [' ']*(8-len(hh[:8]))) hh2 = ' '.join([hex(j)[2:].rjust(2,'0') for j in hh[8:]] + [' ']*(8-len(hh[8:]))) ch1 = ''.join([chr(j) if j inrange(32,127) else'.'for j in hh[:8]]).ljust(8,' ') ch2 = ''.join([chr(j) if j inrange(32,127) else'.'for j in hh[8:]]).ljust(8,' ') print(f' {ind}{hh1}{hh2}{ch1}{ch2}')
Fight Clones
Description
Neo 被 Smith 的分身们包围了!他需要击败他们!
每一个 Smith 都有自己的攻击值和生命值。在受到攻击之前,他们都可以持续攻击 Neo。
Neo 也有自己的攻击值和生命值,虽然比 Smith 高得多,但是 Neo 一次也只能攻击一个 Smith(是的他没有 AOE)。
Neo 需要找到一个最优的攻击策略,以保证自己生命值被减为零之前击倒所有 Smith。
Neo 的生命值是确定的,Oracle 之前告诉过他。但是他需要知道自己的攻击值是否能够确保打赢 Smith 们。
你能帮 Neo 计算出他所需要的最小攻击值么?
Input
第一行输入两个整数 $N H$ ($1 \le N \le 1000,1 \le H \le 1000000$),表示总共有 $N$ 个 Smith,以及 Neo 的生命值为 $H$。
接下来 $N$ 行,表示 $N$ 个 Smith 的属性,每行格式为 $AH$,其中
- $A$ 为该 Smith 的攻击值 ($1 \le A \le 1000$)。
- $H$ 为该 Smith 的生命值 ($1 \le H \le 1000$)。
Output
输出一个整数,表示所需要的最小攻击值。如果无法保证击败 Smith 们则输出 -1。
Hint
Neo 和 Smith 们是 实时战斗制(非回合制),即 Neo 和 Smith 们可以同时攻击对方,只不过 Neo 一个时间只能打一个 Smith,
而 Smith 们可以群殴 Neo(不用考虑碰撞体积的问题)。
可以假定 Neo 和 Smith 们每单位时间只能击打对手一次。例如,某个 Smith 生命值为 20,而 Neo 攻击值为 15,那 Neo 也需要消耗
两个单位的时间来消灭该 Smith,同时意味着有 10 单位的攻击力被浪费掉了。
Smith 一旦受到 Neo 的攻击,就会停止击打 Neo。例如 Neo 和 Smith 某一个时刻同时攻击对方,Neo 则不会受到伤害。
deffind_min_attack(neo_life, smiths): l = 1 r = 1000 ans = -1 while l <= r: m = (l + r) // 2 s = [(k[0], k[1], (k[1]+m-1)//m) for k in smiths] s.sort(key=cmp_to_key(custom_sort)) res = 0 t = 0 for i inrange(len(s)): res += t*s[i][0] t += s[i][2] if res < neo_life: ans = m r = m - 1 else: l = m + 1 return ans
N, H = list(map(int,input().split())) smiths = [] for i inrange(N): smiths.append(tuple(map(int,input().split()))) print(find_min_attack(H, smiths))
im = Image.open('word.png') c = 0 for i inrange(20): for j inrange(20): box = (50*i,50*j,50*(i+1),50*(j+1)) region = im.crop(box) region.save(f'img/{c}.png') c += 1
from pwn import * from hashlib import md5 from pwnlib.util.iters import mbruteforce from base64 import b64decode from PIL import Image from collections import Counter