Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- graph
- C언어
- BOJ
- C
- 생활코딩
- 종만북
- programmers
- 따배씨
- 백준
- 인프런
- JavaScript
- DP
- Cleancode
- BFS
- php
- dfs
- Python
- Algospot
- BASIC
- 정수론
- Algorithm
- web
- 따라하면서 배우는 C언어
- Math
- String
- greedy
- 따라하며 배우는 C언어
- server
- udemy
- sorting
Archives
- Today
- Total
몽상실현개발주의
[Algospot] 정수론 / POTION / Python 파이썬 본문
https://www.algospot.com/judge/problem/read/POTION#
풀이
주어진 정수 배열의 최대공약수를 구하여 해결하는 문제이다.
최대공약수를 구하기위해 유클리드 알고리즘 을 활용하였다.
c = int(input())
def get_gcd(p, q):
if q == 0:
return p
return get_gcd(q, p % q)
def get_r_gcd(r_list):
for i in range(1000, 0, -1):
flag = 1
for r in r_list:
if get_gcd(i, r) != i:
flag = 0
break
if flag:
return i
def get_answer(r_list, p_list, n):
cnt = 1
while True:
flag = 1
for i in range(n):
if r_list[i] * cnt < p_list[i]:
flag = 0
break
if flag:
break
cnt += 1
temp = [0] * n
for i in range(n):
temp[i] = r_list[i] * cnt - p_list[i]
return temp
return cnt
for _ in range(c):
n = int(input())
# 필요한 재료 량
r_list = list(map(int, input().split()))
r_gcd = get_r_gcd(r_list)
gcd_r_list = [r // r_gcd for r in r_list]
p_list = list(map(int, input().split()))
answer = get_answer(gcd_r_list, p_list, n)
print(" ".join(map(str, answer)))
'Algorithm PS > Algospot' 카테고리의 다른 글
[Algospot] 선형자료구조 / JOSEPHUS / Python 파이썬 (0) | 2021.11.22 |
---|---|
[Algospot] 비트마스크 / GRADUATION / Python 파이썬 (0) | 2021.10.19 |
[Algospot] 정수론 / PASS486 / Python 파이썬 (0) | 2021.09.22 |
[Algospot] 이진탐색 / RATIO / Python 파이썬 (0) | 2021.09.22 |
[Algospot] 이분법 / LOAN / Python 파이썬 (0) | 2021.09.22 |
Comments