AtCoder Beginner Contest 215 参戦記
ABC215A - Your First Judge
2分で突破. 書くだけ.
S = input()
if S == 'Hello,World!':
print('AC')
else:
print('WA')
ABC215B - log2(N)
2分で突破. log を取って、誤差を考慮してその近辺をチェックするのでもいいんだけど、素直にシングルループ回しても64回くらいなので、素直に行った.
N = int(input())
for k in range(100):
if 2 ** k <= N:
continue
result = k - 1
break
print(result)
ABC215C - One More aab aba baa
4分で突破. |S|≤8 だから全部生成しても大丈夫なので全部生成した.
from itertools import permutations
S, K = input().split()
K = int(K)
print(sorted(set(''.join(p) for p in permutations(S)))[K - 1])
ABC215D - Coprime 2
8分で突破. TLE1、RE1. Aの最小公倍数とkの最大公約数が1かどうかなだけじゃんと思って TLE した(馬鹿). Aの最小公倍数なんてでかいに決まってるじゃん. Aの最小公倍数に含まれる素数の集合とkを素因数分解した素数の集合の積集合が空かどうか.
def make_prime_table(n):
sieve = list(range(n + 1))
sieve[0] = -1
sieve[1] = -1
for i in range(4, n + 1, 2):
sieve[i] = 2
for i in range(3, int(n ** 0.5) + 1, 2):
if sieve[i] != i:
continue
for j in range(i * i, n + 1, i * 2):
if sieve[j] == j:
sieve[j] = i
return sieve
def prime_factorize(n):
result = []
while n != 1:
p = prime_table[n]
e = 0
while n % p == 0:
n //= p
e += 1
result.append((p, e))
return result
N, M, *A = map(int, open(0).read().split())
prime_table = make_prime_table(10 ** 5)
s = set()
for a in A:
for p, _ in prime_factorize(a):
s.add(p)
result = []
for k in range(1, M + 1):
if any(p in s for p, _ in prime_factorize(k)):
continue
result.append(k)
print(len(result))
print(*result, sep='\n')
ABC215E - Chain Contestant
53分で突破. TLE1. 最後に選択した文字と、これまでに選択した文字集合の組に対する選び方の数を使って DP をすれば良い. サラッとは言っているけど、とんまなバグを埋め込んで直すのに時間がかかってしまった…….
m = 998244353
N = int(input())
S = input()
def conv(current, used):
return current + (used << 5)
def deconv(x):
return x & 31, x >> 5
a = {conv(0, 0): 1}
for x in [ord(c) - ord('A') + 1 for c in S]:
b = {}
for y in a:
c, u = deconv(y)
if c == x:
b.setdefault(y, 0)
b[y] += a[y]
b[y] %= m
elif u & (1 << x) == 0:
t = conv(x, u + (1 << x))
b.setdefault(t, 0)
b[t] += a[y]
b[t] %= m
b.setdefault(y, 0)
b[y] += a[y]
b[y] %= m
a = b
result = 0
for k in a:
if k == conv(0, 0):
continue
result += a[k]
result %= m
print(result)