【AOJ】Introduction to Programming I をPython3で解説（前編）

AOJ（Aizu Online Judge）、Introduction to Programming Iの解答例。

https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/1

今回は、前編（1_A - 5_D）までの解答例。

## 1_A：Hello World

```python
print('Hello World')
```

## 1_B：X Cubic
```python
x = int(input())
print(x**3)
```

## 1_C：Rectangle
```python
A,B = map(int, input().split())
print(A*B, 2*(A+B))
```

- [map()](https://note.nkmk.me/python-map-usage/)
- [split()](https://note.nkmk.me/python-split-rsplit-splitlines-re/)

## 1_D：Watch
```python
S = int(input())

h = int(S / 3600)
m = int((S % 3600) / 60)
s = int(S % 3600 % 60)
print('{}:{}:{}'.format(h, m, s))
```

## 2_A：Small, Large, or Equal
```python
a,b = map(int, input().split())

if a < b:
    print('a < b')
elif a > b:
    print('a > b')
else:
    print('a == b')
```

## 2_B：Range
```python
a,b,c = map(int, input().split())

if a < b < c:
    print('Yes')
else:
    print('No')
```

## 2_C：Sorting Three Numbers
```python
l = list(map(int, input().split()))
l.sort()
print(l[0], l[1], l[2])
```

## 2_D：Circle in a Rectangle
```python
W, H, x, y, r = map(int, input().split())

if x-r<0 or x+r>W:
    print('No')
elif y-r<0 or y+r>H:
    print('No')
else:
    print('Yes')
```

## 3_A：Print Many Hello World
```python
for _ in range(1000):
    print('Hello World')
```

## 3_B：Print Test Cases
```python
cnt = 1
while True:
    x = int(input())
    if x == 0:
        break
    print('Case {}: {}'.format(cnt, x))
    cnt += 1
```

## 3_C：Swapping Two Numbers
```python
while True:
    x, y = map(int, input().split())
    if x == 0 and y == 0:
        break
    elif x > y:
        x, y = y, x
    print(x, y, sep=' ')
```

## 3_D：How Many Divisors?
### for ver.
```python
a, b, c = map(int, input().split())
cnt = 0

for i in range(a, b+1):
    if c % i == 0:
        cnt += 1

print(cnt)
```

### while ver.
```python
a, b, c = map(int, input().split())
cnt = 0
num = a

while True:
    if c % num == 0:
        cnt += 1
    num += 1
    if num > b:
        break

print(cnt)
```

## 4_A：A / B Problem
```python
a, b = map(int, input().split())

d = a//b
r = a%b
f = a/b

# format( ,'.f')で小数点調節
print(d, r, format(f, '.5f'), sep=' ')
```

## 4_B：Circle
```python
pi = 3.14159265358979
r = float(input())

S = pi*(r**2)
C = 2*pi*r

print(format(S, '.6f'), format(C, '.6f'), sep=' ')
```

## 4_C：Simple Calculator
```python
while True:
    a, op, b = input().split()
    a, b = int(a), int(b)

    if op == '?':
        break
    elif op == '+':
        print(a+b)
    elif op == '-':
        print(a-b)
    elif op == '*':
        print(a*b)
    elif op == '/':
        # 小数点以下を切り捨て
        print(a//b)
```

## 4_D：Min, Max and Sum
### 関数なし ver.
```python
# 関数なし
n = int(input())
A = list(map(int, input().split()))

max_a = -1000001
min_a = 1000001
total = 0

for a in A:
    if a > max_a:
        max_a = a
    if a < min_a:
        min_a = a
    total += a

print(min_a, max_a, total, sep=' ')
```
### 関数あり ver.
```python
# min(), max(), sum()
n = int(input())
a = list(map(int, input().split()))

print(min(a), max(a), sum(a), sep=' ')
```

## 5_A：Print a Rectangle
```python
while True:
    H, W = map(int, input().split())
    if H == 0 and W == 0:
        break
    for _ in range(H):
        print('#'*W)
    print()
```

## 5_B：Print a Frame
### 二重ループ ver.
```python
# 二重ループ
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()
```
### whileだけ ver.
```python
# while
while True:
    H, W = map(int, input().split())
    if H == 0 and W == 0:
        break
    print('#'*W)
    for _ in range(H-2):
        print('#', '.'*(W-2), '#', sep='')
    print('#'*W)
    print()
```

## 5_C：Print a Chessboard
```python
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+j) % 2 == 0:
                print('#', end='')
            else:
                print('.', end='')
        print()
    print()
```

## 5_D：Structured Programming
### 1桁ずつ落とす ver.
```python
n = int(input())
three = []

for i in range(3, n+1):
    if i % 3 == 0:
        three.append(i)
    else:
        test = i
        for j in range(5):
            x = test % 10
            if x == 3:
                three.append(i)
                break
            test //= 10

print(*three)
```

### '3' in str() ver.
```python
# '3' in str(i)
n = int(input())

for i in range(1, n+1):
    if i%3 == 0 or '3' in str(i):
        print(' {}'.format(i), end='')
print()
```