1
0

AtCoder初心者振り返りメモ ABC347

Last updated at Posted at 2024-03-30

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))
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0