偶奇の判定

#お題

N 個の整数 a_1, a_2, ..., a_N が与えられます。
この N 個の整数について、a_1 から順に 奇数か偶数か判定し、奇数なら odd 、偶数なら even を改行区切りで出力してください。

入力例
4
1 2 3 4
出力例
odd
even
odd
even

 


#入力

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 a_1, a_2, ..., a_N が与えられます。

 

#出力

N 個の整数について、a_1 から順に 奇数か偶数か判定し、奇数なら odd 、偶数なら even を改行区切りで出力してください。

 

#コード

a = int(input())
b = [int(x) for x in input().split()]
#print(a)

for i in b:
    if i % 2 == 0:
        print("even")
    else:
        print("odd")

 

#参考

N = int(input())
a = list(map(int, input().split()))

for i in range(N):
    if a[i] % 2 == 0:
        print("even")
    elif a[i] % 2 == 1:
        print("odd")
  • ループ処理内で a[i] % 2 == 0 を確かめることにより、各要素に対して偶数か奇数か判別することができます。

偶奇の判定

#お題

N 個の整数 a_1, a_2, ..., a_N が与えられます。
この N 個の整数について、a_1 から順に 奇数か偶数か判定し、奇数なら odd 、偶数なら even を改行区切りで出力してください。

入力例
4
1 2 3 4
出力例
odd
even
odd
even

 


#入力

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 a_1, a_2, ..., a_N が与えられます。

 

#出力

N 個の整数について、a_1 から順に 奇数か偶数か判定し、奇数なら odd 、偶数なら even を改行区切りで出力してください。

 

#コード

a = int(input())
b = [int(x) for x in input().split()]
#print(a)

for i in b:
    if i % 2 == 0:
        print("even")
    else:
        print("odd")

 

#参考

N = int(input())
a = list(map(int, input().split()))

for i in range(N):
    if a[i] % 2 == 0:
        print("even")
    elif a[i] % 2 == 1:
        print("odd")
  • ループ処理内で a[i] % 2 == 0 を確かめることにより、各要素に対して偶数か奇数か判別することができます。

割り切れる数だけ出力

#お題

N 個の整数 a_1, a_2, ..., a_N が与えられます。
この N 個の整数のうち、a_1 から順に 3 で割り切れるか判定し、割り切れる場合のみ改行区切りで出力してください。
また、N 個の整数には 3 で割り切れる数が少なくとも 1 つ含まれています。

 

 


#入力

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 a_1, a_2, ..., a_N が与えられます。

 

#出力

N 個の整数のうち、a_1 から順に 3 で割り切れるか判定し、割り切れる場合のみ改行区切りで出力してください。

 

#コード

a = int(input())
b = [int(x) for x in input().split()]
#print(a)

for i in b:
    if i % 3 == 0:
        print(i)

 

#参考

N = int(input())
a = list(map(int, input().split()))

for i in range(N):
    if a[i] % 3 == 0:
        print(a[i])
  • 3 で割り切れる数の場合、3 で割った余りは必ず 0 になります。
  • なので、a[i] % 3 == 0 とすることで、それぞれの整数に対して 3 で割り切れるかどうかを判別することができます。

奇数だけ出力

#お題

N 個の整数 a_1, a_2, ..., a_N が与えられます。
この N 個の整数のうち、a_1 から順に奇数か偶数か判定し、奇数の場合のみ改行区切りで出力してください。
また、N 個の整数には奇数が少なくとも 1 つ含まれています。

 

 


#入力

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 a_1, a_2, ..., a_N が与えられます。

 


#出力

N 個の整数のうち、a_1 から順に奇数か偶数か判定し、奇数の場合のみ改行区切りで出力してください。

 


#コード

a = int(input())
b = [int(x) for x in input().split()]
#print(a)

for i in b:
    if i % 2 == 1:
        print(i)

 

 

 


#参考

N = int(input())
a = list(map(int, input().split()))

for i in range(N):
    if a[i] % 2 == 1:
        print(a[i])
  • 奇数の場合、2 で割った余りは必ず 1 になります。
  • なので、a[i] % 2 == 1 とすることで、それぞれの整数に対して奇数かどうかを判別することができます。

未知数個の文字列の受け取り

#お題

複数の文字列が入力されます。文字列の数はわかりません。
EOF が入力されるまで、受け取った文字列を改行区切りで出力してください。

 


#入力

s_1 s_2 ... EOF

・ 複数の文字列が 1 行で与えられます。

 

 


#出力

EOF が入力されるまで、受け取った数を改行区切りで出力してください。
出力の末尾には改行を入れてください。

s_1
s_2
...
EOF

 

 

 


#コード

a = [x for x in input().split()]
#print(a)

for i in a:
    if i == "EOF":
        print(i)
        break
    print(i)

 

 


#参考

<別解>

s = list(input().split())

i = 0
while True:
    print(s[i])
    if s[i] == "EOF":
        break
    i += 1
  • Python3 の場合、リストとして 1 行で受け取り、1 つずつ for 文を用いて出力します。

未知数個の数の受け取り

#お題

長さがわからない数列 a が入力されます。
-1 が入力されるまで、受け取った数を改行区切りで出力してください。

 

 


#入力

a_1 a_2 ... -1



・ 数列 a が 1 行で与えられます。

 

 

 


#出力

-1 が入力されるまで、受け取った数を改行区切りで出力してください。
出力の末尾には改行を入れてください。

a_1
a_2
...
-1

 

 

 


#コード

a = [int(x) for x in input().split()]
#print(a)

for i in a:
    if i == -1:
        print(i)
        break
    print(i)

 

 

 


#参考

<別解>

a = list(map(int, input().split()))

i = 0
while True:
    print(a[i])
    if a[i] == -1:
        break
    i += 1
  • Python3 の場合、リストとして 1 行で受け取り、1 つずつ for 文を用いて出力します。

積の最小化

#お題

-1,000 ≦ A ≦ B ≦ 1,000 を満たす 2 つの整数 A, B が与えられます。A 以上 B 以下である 2 つの整数 X, Y を適当に選んだとき、X * Y の取り得る値の最小値を出力してください。なお、X と Y は同じ値でもよいものとします。
たとえば A が 3, B が 5 の場合について考えます。これは X と Y を両方とも 3 にしたときが最小で、 X * Y が 9 となります。

 

 


#入力

A B

 

 

 


#出力

答えとなる数値Nを出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。

N

 

 

 


#コード

a, b = [int(x) for x in input().split()]

if a <= 0 and b >= 0:
    # a から b の間に 0 が含まれる
    print(a * b)
elif a > 0:
    # a と b が両方とも正の数
    print(a * a)
else:
    # a と b が両方とも負の数
    print(b * b)

 

 

 


#参考

a, b = [int(x) for x in input().split()]

if a <= 0 and b >= 0:
    # a から b の間に 0 が含まれる
    print(a * b)
elif a > 0:
    # a と b が両方とも正の数
    print(a * a)
else:
    # a と b が両方とも負の数
    print(b * b)

  • 上記の方針の通りに作成しました。
  • 以下で if 文 の構造を見ていきます。
    • 【 if a <= 0 and b >= 0: 】
      • ここは、a と b の範囲が 0 を跨ぐときに実行されます。
    • 【 elif a > 0: 】
      • ここは、a と b が両方とも正の数であるときに実行されます。
      • a ≦ b が成立しているので、a > 0 の条件のみで構いません。
    • 【 else: 】
      • ここは、a と b が両方とも負の数であるときに実行されます。
      • なぜ、負の数であるときだけ実行されるのか簡単に説明します。
        • ここに到達するということは、以下の命題がすべて偽だったということです。
          • a が 0 以下 かつ b が 0 以上である
          • a と b がともに正の数である
        • つまり、以下のことが言えます。
          • a と b の符号は同じである
          • a は正の数ではない
        • よって、導き出されるパターンは以下の通りです。
          • a と b はともに負の数である