728x90
반응형
https://www.acmicpc.net/problem/1750
1750번: 서로소의 개수
예제 1의 경우 가능한 경우의 수는 (2, 3), (4, 3), (2, 4, 3)이다.
www.acmicpc.net
문제 해결
- dp[i]를 최대공약수를 i로 가지는 경우의 수라고 정의하면 문제풀이는 끝이다.
- 미리 입력 값을 받아놓은다음 하나씩 돌아가며 dp[A[i]] += 1 해야한다.
- 각 입력값을 1부터 Maximum(입력값의 최댓값)까지 수 j를 돌면서 dp[(입력값과 j의 최대 공약수)] += dp[j]를 한다.
CODE
import sys
input = sys.stdin.readline
mod = 10000003
import math
n = int(input())
A = [int(input()) for _ in range(n)]
answer = 0
Maximum = max(A) + 1
dp = [0 for _ in range(Maximum)]
for i in range(n):
for j in range(1,Maximum):
if dp[j]:
dp[math.gcd(j,A[i])] += dp[j]
dp[A[i]] += 1
print(dp[1]%mod)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 1509 팰린드롬 분할 (1) | 2024.02.25 |
---|---|
[python] 백준 2887 행성 터널 (1) | 2024.02.24 |
[python] 백준 1064 평행사변형 (1) | 2024.02.21 |
[python] 백준 30677 반짝반짝 빛나는 별가루 (0) | 2024.02.19 |
[python] 백준 23258 밤편지 (0) | 2024.02.18 |
댓글