def solve(N):
P3 = [3, 9, 27, 81, ...]
P5 = [5, 25, 125, 625, ...]
for i, x in enumerate(P3):
for j, y in enumerate(P5):
if x + y == N:
print(i + 1, j + 1)
return
print(-1)
def solve(N, M, AS, BS, CD):
init_unionfind(N)
for (c, d) in CD:
unite(c - 1, d - 1)
sumA = defaultdict(int)
sumB = defaultdict(int)
for v in range(N):
root = find_root(v)
sumA[root] += AS[v]
sumB[root] += BS[v]
for k in sumA:
if sumA[k] != sumB[k]:
return "No"
return "Yes"
def solve(N, K, AS):
MOD = 998_244_353
div2 = pow(2, MOD - 2, MOD)
sumTable = [N] * (K + 2)
ps = AS[:]
for x in range(1, K + 1):
s = 0
for i in range(N):
s += ps[i]
s %= MOD
ps[i] *= AS[i]
ps[i] %= MOD
sumTable[x] = s
c = Comb(K + 1, MOD)
for x in range(1, K + 1):
ret = 0
for i in range(x + 1):
ret += c.comb(x, i) * sumTable[x - i] * sumTable[i]
ret %= MOD
p = pow(2, x, MOD)
ret -= sumTable[x] * p
ret %= MOD
ret *= div2
ret %= MOD
print(ret)
def aoki(LR):
selected = []
for lr1 in sorted(LR):
if not any(is_p(lr1, lr2) for lr2 in selected):
selected.append(lr1)
return len(selected)
def takahashi(LR):
from operator import itemgetter
selected = []
for lr1 in sorted(LR, key=itemgetter(1)):
if not any(is_p(lr1, lr2) for lr2 in selected):
selected.append(lr1)
return len(selected)
def random_test():
from random import seed, randint
for s in range(1000):
seed(s)
LR = []
for i in range(5):
W = 20
l = randint(0, W - 1)
r = randint(l + 1, W)
LR.append((l, r))
t = takahashi(LR)
a = aoki(LR)
if t != a:
print(s, LR, t, a)