# 110_01 # pA. 三數有權重的相加 ```python= a, b, c, d = map(int, input().split()) print(56*a+24*b+14*c+6*d) ``` # pB1. 閏年(1 行版) ```python= y = int(input()) if y%4 == 0 and y%100 != 0 or y%400 == 0: print("a leap year") else: print("a normal year") ``` # pB2. 閏年 (多行版) ```python= for _ in range(int(input())): y = int(input()) if y%4 == 0 and y%100 != 0 or y%400 == 0: print("a leap year") else: print("a normal year") ``` # pB3. 閏年 (Case 多行版) ```python= for _ in range(1, int(input())+1): y = int(input()) if y%4 == 0 and y%100 != 0 or y%400 == 0: print(f"Case {_}: a leap year") else: print(f"Case {_}: a normal year") ``` # pB4. 閏年 (0 尾版) ```python= y = int(input()) while y: if y%4 == 0 and y%100 != 0 or y%400 == 0: print("a leap year") else: print("a normal year") y = int(input()) ``` # pB5. 閏年 (EOF版) ```python= while True: try: y = int(input()) if y%4 == 0 and y%100 != 0 or y%400 == 0: print("a leap year") else: print("a normal year") except EOFError: break ``` # pC. 票選動物 ```python= a = [0, 0] for _ in range(9): n = input() if n == "Tiger": a[0] += 1 else: a[1] += 1 if a[0] > a[1]: print("Tiger") else: print("Lion") ``` # pD. 化學廢料 ```python= input() print(len(set([int(i) for i in input().split()]))) ``` # pE. 所有位數和 ```python= while True: try: n = input() ans = 0 for i in n: ans += int(i) print(ans) except EOFError: break ``` # pF. 漢明距離 ```python= for _ in range(int(input())): a = input() b = input() ans = 0 for i in range(len(a)): if a[i] != b[i]: ans += 1 print(ans) ``` # pG. 格雷碼 ```python= def f(n, arr): if n-1 == 0: return arr arr = ["0"+i for i in arr]+["1"+j for j in arr[::-1]] return f(n-1, arr) n = int(input()) arr = ["0", "1"] arr = f(n, arr) for i in arr: print(i) ``` # pH1. 網段網路位址和網段廣播位址 ```python= for _ in range(int(input())): a, b = input().split("/") a = a.split(".") b = b.split(".") ip = [0]*(len(a)) for i in range(len(a)): ip[i] = int(a[i]) & int(b[i]) for i in range(len(a)): a[i] = int(a[i]) | (~int(b[i])+256) print(".".join(map(str, ip)),end="/") print(".".join(map(str, a))) ``` # pH2. 網段網路位址和網段廣播位址 ```python= for _ in range(int(input())): a, b = input().split("/") a = a.split(".") b = "1"*(int(b))+"0"*(32-int(b)) son = [0]*(4) temp = 0 for i in range(4): son[i] = int(b[i+temp:i+temp+8],2) temp += 7 ip = [0]*(len(a)) for i in range(len(a)): ip[i] = int(a[i]) & int(son[i]) for i in range(len(a)): a[i] = int(a[i]) | (~int(son[i])+256) print(".".join(map(str, ip)),end="/") print(".".join(map(str, a))) ``` # pI. 矩陣乘法 ```python= while True: try: a, b, c, d = map(int, input().split()) A = [] for i in range(a): A.append([int(i) for i in input().split()]) B = [] for i in range(c): B.append([int(i) for i in input().split()]) C = [[0]*(d) for _ in range(a)] for i in range(a): for j in range(d): temp = 0 for k in range(b): temp += A[i][k]*B[k][j] C[i][j] = temp for i in C: print(" ".join(map(str, i))) except EOFError: break ``` # pJ. 約瑟夫斯問題 數學解,可以看[這個](https://zh.wikipedia.org/zh-tw/%E7%BA%A6%E7%91%9F%E5%A4%AB%E6%96%AF%E9%97%AE%E9%A2%98#%E6%95%B0%E5%AD%A6%E6%8E%A8%E5%AF%BC%E8%A7%A3%E6%B3%95) ```python= while True: try: n, k = map(int, input().split()) s = 0 for i in range(2, n+1): s = (s+k)%i print(s+1) except EOFError: break ``` # pK. 最長共同⼦序列LCS(Longest common subsequence) ```python= for _ in range(int(input())): a = input() b = input() dp = [[0]*(len(b)+1) for _ in range(len(a)+1)] for i in range(1, len(a)+1): for j in range(1, len(b)+1): if a[i-1] == b[j-1]: dp[i][j] = dp[i-1][j-1]+1 else: dp[i][j] = max(dp[i-1][j], dp[i][j-1]) print(dp[-1][-1]) ``` # pL1. ⼆元樹的前序拜訪 ```python= class Node: def __init__(self, n): self.n = n self.left = None self.right = None def add(self, data): if self.n > data: if self.left: self.left.add(data) else: self.left = Node(data) else: if self.right: self.right.add(data) else: self.right = Node(data) def vis(self): ans.append(self.n) if self.left: self.left.vis() if self.right: self.right.vis() for _ in range(int(input())): input() arr = [int(i) for i in input().split(",")] root = Node(arr[0]) for i in arr[1::]: root.add(i) ans = [] root.vis() print(*map(str, ans)) ``` # pL2. ⼆元樹的後序拜訪 ```python= class Node: def __init__(self, n): self.n = n self.left = None self.right = None def add(self, data): if self.n > data: if self.left: self.left.add(data) else: self.left = Node(data) else: if self.right: self.right.add(data) else: self.right = Node(data) def vis(self): if self.left: self.left.vis() if self.right: self.right.vis() ans.append(self.n) for _ in range(int(input())): input() arr = [int(i) for i in input().split(",")] root = Node(arr[0]) for i in arr[1::]: root.add(i) ans = [] root.vis() print(*map(str, ans)) ```