ABC347の回
A-問題
[問題文]
正整数 N,K 及び長さ N の数列A=(A1,A2,…,AN) が与えられます。
A に含まれる要素のうち、K の倍数であるもののみを全て取り出し、それらをK で割って出力してください。
[考察や感想]
リストの値 A[i] % K == 0 で判定し、Kの倍数の場合は
Kで割った商を出力しました。
A.py
N,K = map(int,input().split())
A = list(map(int, input().split()))
ans = []
for i in A:
# Kで割り切れる場合は、Kで割った商を ans へ格納する
if i % K == 0:
ans.append(i//K)
print(*ans)
B-問題
[問題文]
英小文字からなる文字列 S が与えられます。S の空でない部分文字列は何種類ありますか?
ただし、部分文字列とは連続する部分列のことを指します。例えば、xxx は yxxxy の部分文字列ですが、xxyxx の部分文字列ではありません。
[考察や感想]
先頭から 文字数(1,2,・・・,L)で順に部分文字列を切り取って格納しますが、空(null)を除くというヒントを記述するのと重複を除去するためにsetを使いました。
B.py
S = input()
L = len(S)
# set に格納して重複をなくす
ST = set()
# 先頭から 文字数(1,2,・・・,L)で順に部分文字列を切り取って格納する
# null の場合は、除外する
for i in range(1,L+1):
for j in range(0,L+1):
c = S[j:i]
if c != "":
ST.add(c)
print(len(ST))