はい。
Codeforces Round #690 (Div.3)
ooo---- 1176(-13) レーティング計算優しい。
A. Favorite Sequence
t=int(input())
for i in range(t):
n=int(input())
l=[int(i) for i in input().split()]
f=1
a=0
b=n-1
ans=[]
for i in range(n):
if f:
ans.append(l[a])
a+=1
else:
ans.append(l[b])
b-=1
f=(f+1)%2
print(*ans)
なんか数列を両端から使います。。
B. Last Year's Substring
t=int(input())
for i in range(t):
n=int(input())
s=input()
x="2020"
ans=[0]*4
a=0
b=n-1
for p in range(4):
if s[p]==x[p]:
ans[p]=1
else:
break
for p in range(4):
if s[b]==x[3-p]:
ans[3-p]=1
else:
break
b-=1
print("YES" if sum(ans)==4 else "NO")
両端から見て2020を作れるか確認します。両端からだけ確認します。端からだけで完成させないと取り除く箇所が複数になるので。
C. Unique Number
t=int(input())
for i in range(t):
ans=[]
n=int(input())
for a in range(1,10):
if n==a:
ans.append(a)
for b in range(a+1,10):
if n==a+b:
ans.append(a*10+b)
for c in range(b+1,10):
if n==a+b+c:
ans.append(a*100+b*10+c)
for d in range(c+1,10):
if n==a+b+c+d:
ans.append(a*1000+b*100+c*10+d)
for e in range(d+1,10):
if n==a+b+c+d+e:
ans.append(a*10000+b*1000+c*100+d*10+e)
for f in range(e+1,10):
if n==a+b+c+d+e+f:
ans.append(a*100000+b*10000+c*1000+d*100+e*10+f)
for g in range(f+1,10):
if n==a+b+c+d+e+f+g:
ans.append(a*1000000+b*100000+c*10000+d*1000+e*100+f*10+g)
for h in range(g+1,10):
if n==a+b+c+d+e+f+g+h:
ans.append(a*10000000+b*1000000+c*100000+d*10000+e*1000+f*100+g*10+h)
for i in range(h+1,10):
if n==a+b+c+d+e+f+g+h+i:
ans.append(a*100000000+b*10000000+c*1000000+d*100000+e*10000+f*1000+g*100+h*10+i)
if len(ans)>1: ans.sort()
print(ans[0] if len(ans)>0 else -1)
こういう多重ループ久しぶりに書いたなと思います。各数字が一度しか使えないので、0は使う意味ないので、9桁は超えないのでbitDPとかで書けたのではないかと思います。
復習とか解説確認とかは後で