トップページ -> AOJの解答例 -> ITP1_5の解答例

ITP1_5の解答例(Python)

A,B,Cは出力を整える問題です.

ITP1_5_A: Print a Rectangle

# で長方形を描く問題です. print("#",end="")で改行なしで出力しています. 改行のタイミングに気を付けます.

# ITP1_5_A
while True:
    H,W = map(int,input().split(" "))
    # 終了条件
    if H==0 and W==0:
        break
        
    for _ in range(H):
        for _ in range(W):
            print("#",end="")
        print()
        
    # 改行が必要
    print()

ITP1_5_B: Print a Frame

枠を # で作り,中を .で埋める問題です. どのような場合に # で どのような場合に . になるのかを考えます.

# ITP1_5_B
while True:
    H,W = map(int,input().split(" "))
    # 終了条件
    if H==0 and W==0:
        break
        
    for i in range(H):
        for j in range(W):
            # 最初と最後だけ "#" にする
            if i==0 or i==H-1 or j==0 or j==W-1:
                print("#",end="")
            else:
                print(".",end="")
        print()
        
    # 改行が必要
    print()

ITP1_5_C: Print a Chessboard

チェック柄を描く問題です. Bができていれば簡単に解けます.

# ITP1_5_C
while True:
    H,W = map(int,input().split(" "))
    # 終了条件
    if H==0 and W==0:
        break
        
    for i in range(H):
        for j in range(W):
            # i+j の偶奇で判断
            if (i+j)%2 == 0:
                print("#",end="")
            else:
                print(".",end="")
        print()
        
    # 改行が必要
    print()

ITP1_5_D: Structured Programming

この問題だけ毛色が違います. 問題文のコードを読み込んで,それと同じ挙動をするプログラムを書く問題です. 問題のコードは「3の倍数と3を含むときだけ出力する」という某芸人のようなプログラムです. 雰囲気を残した感じに書いてもいいですし

# ITP1_5_D
n = int(input())
i = 1
print(" ",end="") # 先頭に空白を出力する
while True:
    x = i
    # CHECK_NUM
    if x%3==0:
        print(i,end=" ")
        x = 0
    # INCLUDE3
    elif x%10==3:
        print(i,end=" ")
        x = 0
    while x:
        x /= 10
        x = int(x)
        if x%10==3:
            print(i,end=" ")
            x = 0

    i += 1
    if i > n:
        break
        
print() # 最後に改行
3を含むかどうかは文字列で判定してしまうこともできます.

# ITP1_5_D
n = int(input())
print(" ",end="") # 先頭に空白を出力する

for i in range(1,n+1):
    if i%3==0:
        print(i,end=" ")
        continue
    
    str_num = str(i)
    for j in range(len(str_num)):
        if str_num[j]=="3":
            print(i,end=" ")
            break

print() # 最後に改行

<- 前へ戻る 【目次に戻る】 次へ進む ->