---
# System prepended metadata

title: Untitled

---


'''
這是多行註解
第1個Python程式，執行結果是否如自己所想
若與想像不同，應該怎麼改呢??
'''
a, b = input(), input()   # 這是單行註解
print(a+b)

'''
試著執行下方程式，就會了解為什麼上方程式會有這樣的結果
'''
a, b = input(), input()
print(type(a))

'''
題目內容：依序輸入國、英、數三科成績，其權值分別為國文4倍、英文3倍、數學3倍，請計算加權平均(國文成績*4+英文成績*3+數學成績*3/10)
請將底線處填入適當的程式碼
'''
ch, en, ma = int(input()), int(input()), int(input())          # int() 將文字強制轉整數
avg = ch*0.4 + en*0.3 + ma*0.3
print(avg)

'''
題目內容：輸入兩點座標(x1, y1), (x2, y2)，輸出兩點距離
請將底線處填入適當的程式碼
'''
x1, y1, x2, y2 = float(input()), float(input()), float(input()), float(input())  # float() 將文字強制轉浮點數(俗稱小數)
dist = ((x1-x2)**2+(y1-y2)**2)**0.5
print(dist)

'''
題目內容：輸入一個數，請判斷其為奇偶數
請將底線處填入適當的程式碼
'''
n = int(input())
if (n%2==0):
    print("偶數")
else:
    print("奇數")
    
'''
題目內容：輸入一個數，請依下列原則輸出對應結果
    3*k(3的倍數) ==> Good
    3*k+1    ==> SoSo
    3*k+2    ==> Bad
'''
n = int(input())
if (n%3==0):
    print("Good")
elif (n%3==1):
    print("SoSo")
else:
    print("Bad")

'''
題目內容：輸入西元年，請判斷其為閏年或平年
閏年判斷：西元年被400整除 或 西元年被4整除且不被100整除
請將底線處填入適當的程式碼
'''
y = int(input())
if ((y%400==0) or (y%4==0 and y%100!=0)):
    print("閏年")
else:
    print("平年")
    
'''
題目內容：輸入一個數，請計算所有數字和
例如：輸入2469，輸出21 (2+4+6+9)
請將底線處填入適當的程式碼
'''
n = int(input())          # 整數版本寫法
sum = 0                   
while (n>0):           # 直到n變成0為止
    sum = n%10 + sum   # 重覆一: 將n的個位數加至總和sum
    n = n//10       # 重覆二: 將n的個位數去除
print(sum)

'''
題目內容：輸入一個數，請計算所有數字和
例如：輸入2469，輸出21 (2+4+6+9)
請將底線處填入適當的程式碼
'''
n = input()               # 字串版本寫法
sum = 0                   
for x in n:               # 走訪字串n的每個字元，存到變數x
    sum = int(x)+sum     # 將變數x轉成整數加至總和sum
print(sum)

'''
題目內容：終極密碼遊戲，電腦隨機從1-100取一個亂數當做密碼，玩家猜錯電腦會給提示
請將底線處填入適當的程式碼
'''
import random                    # 匯入random模組
ans =  random.randint(1,100)     # 利用random模組的randint()函數，從1到100之間取一個亂數
print('請猜一個1~100的數字')
play = True
while(play):
    guess = int(input('來隨便猜一個數字吧: ')) 
    if (guess>ans):
        print('喔你猜得太大囉')
    elif (guess<ans):
        print('喔你猜得太小囉')
    else:
        print('恭喜你猜對了！')
        play = False
        
'''
題目內容：輸入一個數，判斷其是否為質數，輸出對應的結果
請將底線處填入適當的程式碼
'''
n = int(input())
flag = 0                        # flag值為0代表質數，1代表合數
for i in range(2,n-1):   # 從2到n-1，若有一個數可以把n整除，則n為合數
    if (n%i==0):
        flag = 1
        break                   # break語法用來跳出迴圈
if (flag==0):
    print("質數") 
else:
    print("合數")
    
'''
題目內容：輸入n個數，中間以空白間隔，請計算此n數和
例如：輸入20 30 40，輸出90
請將底線處填入適當的程式碼
'''
print('輸入n個數，中間以空白間隔')
num = input().split()      # num = ['20', '30', '40']
ans = 0
for x in num:
    ans = ans+int(x)
print(ans)

'''
題目內容：輸入n個數，中間以空白間隔，請計算此n數和 [進化版]
例如：輸入20 30 40，輸出90
請將底線處填入適當的程式碼
'''
print('輸入n個數，中間以空白間隔')
ans = 0
for x in input().split():
    ans = ans+int(x)
print(ans)

'''
題目內容：輸入n個數，中間以空白間隔，請計算此n數和 [再進化版]
例如：輸入20 30 40，輸出90
'''
print('輸入n個數，中間以空白間隔')
num = [int(x) for x in input().split()]         # 此稱之為List Comprehension 列表建構
print(sum(num))

'''
題目內容：輸入n個數，中間以空白間隔，請計算此n數和 [終極版]
例如：輸入20 30 40，輸出90
'''
print('輸入n個數，中間以空白間隔')
print(sum([int(x) for x in input().split()]))

'''
題目內容：輸入一個數，請計算所有數字和
例如：輸入2469，輸出21 (2+4+6+9)
請將底線處填入適當的程式碼
'''
print('輸入一個數')
print(sum([int(x) for x in input()]))

'''
線上解題常會遇到測試資料一行有多個數值
可以用以下方法解決
'''
a, b, c = [int(x) for x in input().split()]

'''
統計文章裡各字母(大小寫視同大寫)出現次數，依字典序呈現結果，若次數為0 則不輸出該字母
範例輸入: This is testing
範例輸出: 
E 1
G 1
H 1
I 3
N 1
S 3
T 3
'''
d = {}                              
for i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':   # 建立一個key為A-Z各字母，其所有value皆為 0 的字典
    d[i] = 0          
l = input()                         # 讀入文章
for x in l.upper():                 # 將文章中所有字母轉為大寫，用for迴圈走訪所有字元
    if ('A' <= x <= 'Z'):           # 英文字母才納入統計
        d[x] = d[x]+1
for y in d:                         # 走訪dict裡的所有key
    if (d[y] > 0):
        print(y, d[y])
        
'''
統計文章裡各字母(大小寫視同大寫)出現次數，依字典序呈現結果，若次數為0 則不輸出該字母
範例輸入: This is testing
範例輸出: 
E 1
G 1
H 1
I 3
N 1
S 3
T 3
'''
import string                       # 匯入string模組
a = string.ascii_uppercase          # a變數為'ABCDEFGHIJKLMNOPQRSTUVWXYZ'   
d = dict.fromkeys(a, 0)             # 建立一個key為A-Z各字母，其所有value皆為 0 的字典
l = input()                         # 讀入文章
for x in l.upper():                 # 將文章中所有字母轉為大寫，用for迴圈遍歷所有字元
    if ('A' <= x <= 'Z'):           # 英文字母才納入統計
        d[x] = d[x]+1
for y in d:                         # 走訪dict裡的所有key
    if (d[y] > 0):
        print(y, d[y])

'''
題型：Caesar cipher encryption
題目內容：輸入一個字串s 及字元向右平移數n，請輸出其加密後結果
範例輸入：HAPPYCTF{L2_PYTHON} 5
範例輸出：MFUUDHYK{Q2_UDYMTS} 
請將底線處填入適當的程式碼
'''
s, n = input().split()                      # 將 s, n 讀入(資料型態為字串)
n = int(n)                                  # 將 n 轉換為整數
ans = ''                                    # ans 為存放答案的變數
for c in s:                     
    if ('A' <= c <= 'Z'):                   # 若是大寫字母則平移 n
        if (ord(c)+n > ord('Z')):           # 若平移後超出 Z
            ans = ans + chr(ord(c)+n-26)
        else:
            ans = ans + chr(ord(c)+n)    
    else:                                   # 若不是大寫字母則不平移(原字元不變)
        ans = ans + c

