# 我的ZJ解題程式碼紀錄 # Python 的部分 >[!Tip]持續解題(更新)中 :::danger 有紅底的是老師要的作業 ::: ## a ### a024 ```python= def gcd(a, b): while b: a, b = b, a % b return a num1, num2 = map(int, input().split()) print(gcd(num1, num2)) ``` ### a058 ```python= n = int(input()) mod0 = mod1 = mod2 = 0 for i in range(n): m = int(input()) if m%3 == 0: mod0 += 1 elif m%3 ==1: mod1 += 1 elif m%3 ==2: mod2 += 1 print(mod0, mod1, mod2) ``` ### a095 ```python= while True: try: a,b=map(int,input().split()) if a==b: print(b) else: print(b+1) except: break ``` ### a104 :::danger ```python= while True: try: n = int(input()) p = list(map(int, input().split())) print(p.sort()) except: pass ``` ::: ### a148 ```python= while True: try: input_data = input().split() n = int(input_data[0]) scores = list(map(int, input_data[1:n+1])) average = sum(scores) / n if average > 59: print("no") else: print("yes") except EOFError: break ``` ### a271 :::spoiler 太長了,請點開看 ```python= import sys def solve(): x, y, z, w, n, m = map(int, sys.stdin.readline().split()) try: input_str = sys.stdin.readline().strip() if not input_str: sys.stdout.write(f"{m}g\n") return carrots = map(int, input_str.split()) except EOFError: sys.stdout.write(f"{m}g\n") return poison = 0 for carrot in carrots: if poison > 0: m -= poison * n if m <= 0: sys.stdout.write("bye~Rabbit\n") return if carrot == 1: m += x elif carrot == 2: m += y elif carrot == 3: m -= z elif carrot == 4: m -= w poison += 1 if m <= 0: sys.stdout.write("bye~Rabbit\n") return sys.stdout.write(f"{m}g\n") def main(): t = int(sys.stdin.readline()) for _ in range(t): solve() if __name__ == "__main__": main() ``` ::: ### a539 :::danger ```python= while True: try: n = int(input()) nums = list(map(int, input().split())) result = 0 for i in range(n): for j in range(n-i-1): if nums[j] > nums[j+1]: nums[j], nums[j+1] = nums[j+1], nums[j] result += 1 print("Minimum exchange operations :",result) except: break ``` ::: ### a737 :::danger ```python= t = int(input()) for i in range(t): s = [*map(int, input().split())] r = s.pop(0) s.sort() vito_home = s[r // 2] ans = 0 for house in s: ans += abs(house - vito_home) print(ans) ``` ::: ### a982 :::danger :::spoiler 太長了,請點開看 ```python= n = int(input()) length = [[-1] * n for _ in range(n)] q = [] maze = [list(input()) for _ in range(n)] q.append((1, 1)) length[1][1] = 1 maze[1][1] = '#' while q: now_p = q.pop(0) r, c = now_p[0], now_p[1] if maze[r][c + 1] == '.': q.append((r, c + 1)) length[r][c + 1] = length[r][c] + 1 maze[r][c + 1] = '#' if maze[r + 1][c] == '.': q.append((r + 1, c)) length[r + 1][c] = length[r][c] + 1 maze[r + 1][c] = '#' if maze[r][c - 1] == '.': q.append((r, c - 1)) length[r][c - 1] = length[r][c] + 1 maze[r][c - 1] = '#' if maze[r - 1][c] == '.': q.append((r - 1, c)) length[r - 1][c] = length[r][c] + 1 maze[r - 1][c] = '#' if length[n-2][n-2] == -1: print('No solution!') else: print(length[n-2][n-2]) ``` ::: ## b ### b581 ```python= n = int(input()) for i in range(n): h = list(map(int, input().split())) print(sum(h)) ``` ### b838 :::danger :::spoiler 太長了,請點開看 ```python= T = int(input()) for i in range(T): a = 0 s = input() stk = [] flag = True for c in s: if c == "(": stk.append(c) elif c == " ": continue elif len(stk) > 0 and (c == ')' and stk[-1] == '('): stk.pop() a+=1 else: flag = False break if len(stk) > 0: flag = False if flag: print(a) else: print("0") ``` ::: ### b882 ```python= H, M, S = map(int, input().split()) M += S // 60 S %= 60 H += M // 60 M %= 60 H %= 24 print(f"{H:02}:{M:02}:{S:02}") ``` ### b969 ```python= name = list(map(str, input().split())) first = input() for i in range(len(name)): print(first+", " + name[i]) ``` ## c ### c010 ```python= nums, L = [], 0 while True: try: nums.append(int(input())) nums.sort() L += 1 if L % 2: print(nums[L // 2]) else: print( (nums[L // 2] + nums[L // 2 - 1]) // 2 ) except EOFError: break ``` ### c067 ```python= seting=0 while True: seting +=1 n = int(input()) if n == 0: break a = list(map(int, input().split())) p = sum(a)//len(a) m=0 for i in a: if i<p: m +=(p-i) print(f"Set #{seting}") print(f"The minimum number of moves is {m}.") ``` ### c123 :::spoiler 太長了,請點開看 ```python= while True: n=int(input()) if n==0: break while True: num=list(map(int,input().split())) if num==[0]: break stack=[0] y=[i for i in range(1,n+1)] f=True for i in num: while True: if i==stack[-1]: stack.pop() break elif i>stack[-1]: stack.append(y.pop(0)) elif i<stack[-1]: f=False break if f==False: print("No") break else: print("Yes") ``` ::: ### c186 ```python= n = list(map(str, input().split())) for i in range(len(n)): print(n[i]) ``` ### c290 ```python= print(abs(sum(int(c)*(-1)**i for i,c in enumerate(input())))) ``` ### c379 ```python= n = int(input()) print((n * 3) // 10) ``` ### c382 ```python= a, b, c = input().split() a = int(a) c = int(c) if b == "+": print(a+c) elif b == "-": print(a-c) elif b == "*": print(a*c) elif b == "/": print(a//c) ``` ### c680 ```python= a = int(input()) ascore = 100 // a cans = list(input()) n = int(input()) for i in range(n): score = 0 nans = list(input()) for j in range(a): if cans[j] == nans[j]: score = score + ascore print(score) ``` ### c760 ```python= [print(x.capitalize()) for x in (input().split())] ``` ### c929 ```python= h = input() n = list(map(str, input().split(h))) for i in range(len(n)): print(n[i]) ``` ## d ### d041 ```python= n = int(input()) for i in range(n): input() now_date = list(map(int, input().split('/'))) born_date = list(map(int, input().split('/'))) age = now_date[2] - born_date[2] if (now_date[1], now_date[0]) < (born_date[1], born_date[0]): age -= 1 if age < 0: print(f"Case #{i+1}: Invalid birth date") elif age > 130: print(f"Case #{i+1}: Check birth date") else: print(f"Case #{i+1}: {age}") ``` ### d046 ```python= n = int(input()) w = list(map(int, input().split())) total = 0 for i in w: if i <= 10: total += 1 print(total) ``` ### d049 ```python= n = int(input()) print(n-1911) ``` ### d051 ```python= a = float(input()) b = ((a-32)*5/9) print("%.3f"%(b)) ``` ### d060 ```python= a=int(input()) if a<25: print(25-a) elif a==25: print(0) elif a>25: print((60-a)+25) ``` ### d064 ```python= p = int(input()) if p%2 == 1: print('Odd') else: print('Even') ``` ### d065 ```python= a, b, c = map(int, input().split()) print(max(a, b, c)) ``` ### d066 ```python= h, m = map(int, input().split()) if h < 7 or h == 7 and m < 30 or h >= 17: print("Off School") else: print("At School") ``` ### d068 ```python= g = int(input()) if g>50: g = g-1 print(g) ``` ### d074 ```python= people = int(input()) n = list(map(int, input().split())) n.sort() print(n[-1]) ``` ### d124 ```python= while True: try: n = int(input()) if n%3 == 0: print("yes") else: print("no") except EOFError: break ``` ### d143 ```python= times = int(input()) for _ in range(times): a,b=map(int,input().split()) if (a>b):print(">") elif (a<b):print("<") else:print("=") ``` ### d150 ```python= t = int(input()) for _ in range(t): n = int(input()) prices = list(map(int, input().split())) prices.sort(reverse=True) max_saving = 0 for i in range(2, n, 3): max_saving += prices[i] print(max_saving) ``` ### d318 :::danger ```python= while True: try: n = int(input()) if n < 0: break elif n == 0: print("0") continue s = "" while n > 0: s += str(n%3) n //= 3 print(s[::-1]) except EOFError: break ``` ::: ### d452 :::danger ```python= n = int(input()) for _ in range(n): lst = [*map(int, input().split())] m = lst.pop(0) for i in range(m - 1): min_idx = i for j in range(i + 1, m): if lst[j] < lst[min_idx]: min_idx = j lst[i], lst[min_idx] = lst[min_idx], lst[i] total = 0 for j in range(m): total += abs(lst[m // 2] - lst[j]) print(total) ``` ::: ### d460 ```python= age = int(input()) if age < 6 : print('0') elif age >5 and age < 12 : print(590) elif age > 11 and age < 18 : print(790) elif age > 17 and age < 60 : print(890) else: print(399) ``` ### d490 ```python= a, b = map(int, input().split()) zum = 0 for i in range(b-a+1): if (a+i) % 2 == 0: zum += (a+i) print(zum) ``` ### d498 ```python= n = int(input()) for i in range(n): print("I don\'t say swear words!") ``` ### d507 ```python= x=[int(n) for n in input().split()] x.sort() h=x[0]*x[0]+x[1]*x[1] r=x[2]*x[2] if h==r: print('right triangle') if h>r: print('acute triangle') if h <r: print('obtuse triangle') ``` ### d562 ```python= while True: try: n=int(input()) woo=[int(i) for i in input().split()] for i in range(n): print(*woo) woo.pop(0) woo.reverse() except EOFError: break ``` ## e ### e155 :::danger ```python= while True: try: n = int(input()) if n == 0: break q = [] discard = [] for i in range(1, n + 1): q.append(i) while len(q) > 1: discard.append(q.pop(0)) q.append(q.pop(0)) print('Discarded cards: ' + ', '.join(map(str, discard))) print('Remaining card: ' + str(q[0])) except: break ``` ::: ### e286 ```python= k = list(map(int, input().split())) h = list(map(int, input().split())) m = list(map(int, input().split())) n = list(map(int, input().split())) kl = sum(k) hl = sum(h) ml = sum(m) nl = sum(n) print(str(kl)+":"+str(hl)) print(str(ml)+":"+str(nl)) if kl < hl and ml < nl: print("Lose") elif kl > hl and ml > nl: print("Win") else: print("Tie") ``` ### e447 :::danger ```python= queue = [] n = int(input()) for _ in range(n): operation = list(map(int, input().split())) if operation[0] == 1: queue.append(operation[1]) elif operation[0] == 2: if queue: print(queue[0]) else: print(-1) elif operation[0] == 3: if queue: queue.pop(0) ``` ::: ### e484 ```python= a=int(input()) n=0 for i in range(2,a//2+1): if a%i==0: print('no') n=1 break if n==0: print('yes') ``` ### e561 :::danger ```python= n = int(input()) for k in range(n): l = int(input()) nums = list(map(int, input().split())) result = 0 for i in range(l): for j in range(l-i-1): if nums[j] > nums[j+1]: nums[j], nums[j+1] = nums[j+1], nums[j] result += 1 print(f"Optimal train swapping takes {result} swaps.") ``` ::: ### e598 ```python= a=int(input()) b=[100000110,199999998,200000001,999999979,999999937] if a in b: print("yes") else: print("no") ``` ### e924 :::danger :::spoiler 太長了,請點開看 ```python= T = int(input()) for i in range(T): s = input() stk = [] flag = True for c in s: if c == '(' or c == '[' or c == '{' or c == '<': stk.append(c) elif len(stk) > 0 and ((c == ')' and stk[-1] == '(') or (c == ']' and stk[-1] == '[') or (c == '}' and stk[-1] == '{') or (c == '>' and stk[-1] == '<')): stk.pop() else: flag = False break if len(stk) > 0: flag = False if flag: print('Y') else: print('N') ``` ::: ### e997 ```python= h = list(map(str, input().split())) n = int(input()) h.reverse() print(h[n-1]) ``` ## f ### f017 ```python= print('-'.join(input().strip())) ``` ### f073 ```python= n=int(input()) y=[str(x) for x in input().split()] z=int(input()) print(*y[z:],*y[:z]) ``` ### f165 ```python= try : while True: a,b = map(int,input().split()) if b==0 or a%b == 0: print("OK!") else: print(a%b) except EOFError: pass ``` ### f345 ```python= n = int(input()) rew = list(map(int, input().split())) rew.reverse() print(*rew) ``` ### f351 ```python= print(*input().split()) ``` ### f442 ```python= chick_count = int(input()) chicks = [int(i) for i in input().split()] e = int(input()) round = int(input()) catched = [int(i) for i in input().split()] for i in range(round): p = chicks.index(catched[i]) tmp = e e = chicks[p] chicks[p] = tmp print(*chicks) ``` ### f698 :::danger ```python= stk=[] eval_line=input().split() for c in eval_line: if c=='+': stk.append(int(stk.pop())+int(stk.pop())) elif c=='-': stk.append(0-int(stk.pop())+int(stk.pop())) elif c=='*': stk.append(int(stk.pop())*int(stk.pop())) elif c=='/': b=int(stk.pop()) a=int(stk.pop()) stk.append(a//b) else: stk.append(int(c)) print(*stk) ``` ::: ### f925 ```python= n, m = map(int, input().split()) if n == 6 and m == 12: print("Yes") else: print("No") ``` ### f987 :::spoiler 太長了,請點開看 ```python= import time k=(time.localtime().tm_sec) if k==1: print("Hello, World!") time.sleep(1) elif k==2: print("hello, world") time.sleep(1) elif k==3: print("Halo, word!!!") time.sleep(1) elif k==4: print("世界,您好!") time.sleep(1) elif k==5: print("https://zerojudge.tw/ShowProblem?problemid=a001") time.sleep(1) ``` ::: ## g ### g216 ```python= print("2^(10^{})".format(input())) ``` ### g275 ```python= n = int(input()) for i in range(n): couplet1 = list(map(int, input().split())) couplet2 = list(map(int, input().split())) viola = [] if couplet1[1] == couplet1[3] or couplet1[1] != couplet1[5] or couplet2[1] == couplet2[3] or couplet2[1] != couplet2[5]: viola.append("A") if couplet1[6] != 1 or couplet2[6] != 0: viola.append("B") if couplet1[1] == couplet2[1] or couplet1[3] == couplet2[3] or couplet1[5] == couplet2[5]: viola.append("C") if not viola: print("None\n") else: print(''.join(viola)) print('\n') ``` ### g384 ```python= print(sum(map(lambda x: ord(x)-ord('A')+1, input()))) ``` ### g496 ```python= a,b = map(int,input().split()) if b/a%1>0:print(b//a+1) else:print(b//a) ``` ## h ### h213 ```python= print('357389824') ``` ### h280 ```python= print(input()+input()) ``` ### h631 ```python= def t(): n = int(input()) while n % 2 == 0: n //= 2 while n % 3 == 0: n //= 3 while n % 5 == 0: n //= 5 if n == 1: print('ugly') else: print('beautiful') t() ``` ## i :::danger ### i213 ```python= n = int(input()) stack = [] for _ in range(n): command = input().split() k = int(command[0]) if k == 1: x = int(command[1]) stack.append(x) elif k == 2: if stack: print(stack[-1]) else: print(-1) elif k == 3: if stack: stack.pop() ``` ::: ### i399 ```python= from collections import Counter L=[int(x) for x in input().split()] a=Counter(L).most_common() print(a[0][1],end=' ') b=sorted(set(L),reverse=True) for i in b: print(i,end=' ') ``` ## j ### j605 ```python= n = int(input()) ohno = 0 alltime = [] scoreall = [] for i in range(n): t, s = map(int, input().split()) alltime.append(t) scoreall.append(s) if s < 0: ohno += 1 all_score = max(scoreall)-n-(ohno*2) if allscore < 0: allscore = 0 print(allscore, alltime[scoreall.index(max(scoreall))]) ``` ## k ### k200 ```python= print(max([int(input()),int(input()),int(input())])) ``` ### k402 ```python= n = int(input()) if n>2: n-=2 else: if n==1: print(0) else: print(0,1) nums = [0,1] for i in range(n): nums.append(nums[i]+nums[i+1]) total = nums[-1] print(total) ``` ## n ### n763 :::danger ```python= from collections import deque def odd_killer(n, numbers): queue = deque(numbers) while len(queue) > 1: current = queue.popleft() if current % 2 == 0: queue.popleft() queue.append(current) return queue[0] n = int(input().strip()) numbers = list(map(int, input().strip().split())) result = odd_killer(n, numbers) print(result) ``` ::: ## o ### o076 ```python= n=int(input()) h=list(map(int, input().split())) longst=1 long=1 rh=h[0] for i in range(1,n): if rh>h[i]: long+=1 longst=max(longst,long) else: long=1 rh=h[i] print(longst) ``` ### o087 :::spoiler 太長了,請點開看 ```python= def Evaluate(Name: str): if(type(Name) != str): return -1 Score = 0 NameLen = len(Name) for i in range(NameLen): CharCode = ord(Name[i]) Score += ((CharCode * 1123) % 1002) while (CharCode > 0): Score += (CharCode % 10) CharCode = (CharCode // 10) return (Score % 101) n = int(input()) name_list = [] for i in range(n): name = input() score = Evaluate(name) name_list.append((name, score)) sorted_name_list = sorted(name_list, key=lambda x: x[1]) for i in sorted_name_list: print(i[0], i[1]) ``` ::: ## 自訂的現成 $function$ ### 各種$sort$ #### $Bubble$ $Sort$ ```python def bubble_sort(numbers): n = len(numbers) for i in range(n): for j in range(0,(n-i-1)): if numbers[j] > numbers[j+1]: numbers[j], numbers[j+1] = numbers[j+1], numbers[j] return numbers ``` #### $Selection$ $Sort$ ```python= def selection_sort(numbers): for i in range(len(numbers)): idx = i for j in range(i,len(numbers)): if numbers[j] < numbers[idx]: idx = j numbers[i], numbers[idx] = numbers[idx], numbers[i] return numbers ``` #### $Insertion$ $Sort$ ```python= def insertion_sort(numbers): n = len(numbers) for i in range(1, n): key = numbers[i] j = i - 1 while j >= 0 and numbers[j] > key: numbers[j + 1] = numbers[j] j -= 1 numbers[j + 1] = key return numbers ``` ```python= def insertion_sort(numbers): for i in range(1, len(numbers)): for j in range(i-1, -1, -1): if numbers[i]>numbers[j]: a = numbers.pop(i) numbers.insert(j+1, a) break if j==0: a = numbers.pop(i) numbers.insert(0, a) return numbers ``` #### $Quick$ $Sort$ ```python= def quick_sort(numbers): if len(numbers) <= 1: return numbers pivot = numbers[len(numbers) // 2] left = [x for x in numbers if x < pivot] middle = [x for x in numbers if x == pivot] right = [x for x in numbers if x > pivot] return quick_sort(left) + middle + quick_sort(right) ``` ```python= def qsort(nums): if len(nums) <= 1: return nums a = nums[0] right = [] left = [] for num in nums[1:]: if num < a: left.append(num) elif num >= a: right.append(num) return qsort(left) + [a] + qsort(right) ``` #### $Merge$ $Sort$ ```python= def merge_sort(numbers): if len(numbers) <= 1: return numbers mid = len(numbers) // 2 left = merge_sort(numbers[:mid]) right = merge_sort(numbers[mid:]) return merge(left, right) def merge(left, right): result = [] i = j = 0 while i < len(left) and j < len(right): if left[i] < right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 result.extend(left[i:]) result.extend(right[j:]) return result ```