https://www.acmicpc.net/problem/1750
1750번: 서로소의 개수
예제 1의 경우 가능한 경우의 수는 (2, 3), (4, 3), (2, 4, 3)이다.
www.acmicpc.net
배낭 문제로 풀리는걸 깨달으면 쉬운 문제이다. 수열의 원소를 선택해서 어떤 연산을 해서 나오는 경우의 수를 구할때, 배낭 문제를 사용하면 쉽게 풀 수 있다는걸 잊지 말자. 단, 연산의 교환법칙이 성립해야한다.
import sys
import math
mod = 10000003
input = sys.stdin.readline
n = int(input())
a = [int(input()) for _ in range(n)]
ans = 0
SZ = max(a) + 1
dp = [0] * SZ
for i in range(n):
for j in range(1, SZ):
if dp[j]: dp[math.gcd(j, a[i])] += dp[j]
dp[a[i]] += 1
print(dp[1] % mod)
코드는 간단하다.
'알고리즘' 카테고리의 다른 글
백준 15587 Cow at Large (Gold) 파이썬 풀이 (0) | 2023.03.11 |
---|---|
2023 02 21 problem solving (0) | 2023.02.21 |
2023 02 17 problem solving (0) | 2023.02.17 |
백준 25402 트리와 쿼리 파이썬 풀이 (1) | 2023.02.17 |
정올 1차 1, 2번 문제 풀이 (0) | 2023.02.16 |