pontz_rwのブログ

プログラミング等の備忘録

ITP1_4_D: Min, Max and Sum

最小値, 最大値, 合計値 | プログラミング入門 | Aizu Online Judge
最小値、最大値、合計値を求める問題


最小値、最大値については、順次比較をし、入れ替えるかどうかを条件分岐させます。
最大値は、順次加算していきます。


解答1

n = int(input())
line = list(map(int, input().split()))

max = line[0]
min = line[0]
sum = line[0]

for i in range(1, n):
    if max < line[i]:
        max = line[i]
    elif min > line[i]:
        min = line[i]
    sum += line[i]

print(min, max, sum)


解答2
最小値、最大値、合計値に関して、pythonではそれぞれmin()max()sum()が用意されています。

n = input()
a = list(map(int, input().split()))
print(min(a), max(a), sum(a))

ITP1_4_C: Simple Calculator

単純計算器 | プログラミング入門 | Aizu Online Judge
入力値から数値と演算子を読み込み計算する問題


解答1

while True:
    line = input().split()
    a = int(line[0])
    op = line[1]
    b = int(line[2])

    if op == '+':
        print(a + b)
    elif op == '-':
        print(a - b)
    elif op == '*':
        print(a * b)
    elif op == '/':
        print(a // b)
    else:
        break


解答2
eval()を利用すると引数で渡した文字列がpythonコードとして評価されます

while True:
    line = input()
    if '?' in line:
        break
    print(eval(line.replace('/', '//')))

ITP1_4_B: Circle

円 | プログラミング入門 | Aizu Online Judge
円の面積と円周を求める問題


円周率はmathモジュールの中に、piとして定義されています。
import mathを記述してモジュールを取り込みます。
math.pyと記述し、mathモジュールの中のpiを利用します。


解答

import math

r = float(input())
m = r ** 2 * math.pi
l = r * 2 * math.pi

print('{:.6f} {:.6f}'.format(m, l))

ITP1_4_A: A / B Problem

A / B 問題 | プログラミング入門 | Aizu Online Judge
割り算の問題


python3では、割り算に関して以下の三つの形式があります。
/は、除算をし浮動小数点数を返します。
//は、除算をし小数部を切り捨てて整数を返します。
%は、剰余を返します。


解答

a, b = map(int, input().split())
d = a // b
r = a % b
f = a / b
print(d, r, "{:.5f}".format(f))

ITP1_3_D: How Many Divisors?

約数の数 | プログラミング入門 | Aizu Online Judge
約数の個数を求める問題


aからbまでの間繰り返すのにrange()を利用します。
cの約数であるということは、cで割ったときの余りが0であることに等しいので、その個数を記録します。


解答

a, b, c = map(int, input().split())
count = 0
for i in range(a, b + 1):
    if c % i == 0:
        count += 1
print(count)

ITP1_3_C: Swapping Two Numbers

2つの数の交換 | プログラミング入門 | Aizu Online Judge
複数の入力値を比較し入れ替えて出力する問題


a > bとそれ以外の場合とで条件を分岐して出力します。


解答1

while True:
    a, b = map(int, input().split())
    if a == 0 and b == 0:
        break
    elif a < b:
        print(a, b)
    else:
        print(b, a)


解答2
並べ替えてから出力します。

while True:
    a, b = sorted(map(int, input().split()))
    if a == 0 and b == 0:
        break
    print(a, b)

ITP1_3_B: Print Test Cases

テストケースの出力 | プログラミング入門 | Aizu Online Judge
複数の入力データを処理する問題


入力値が0の場合に繰り返し構文から抜けます。


解答1

i = 1
while True:
    x = int(input())
    if x == 0: break
    print("Case {}: {}".format(i, n))
    i += 1


解答2

x = input()
i = 1
while (x != '0'):
    print("Case {}: {}".format(i, x));
    i += 1;