목록정수론 (18)
기록방
👉 문제링크 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 🔸 문제 분석 🔸 정수 N을 연속된 소수의 합으로 만드는 경우의 수를 출력한다. 🔸 문제 풀이 🔸 소수를 구하기 위해 에라토스테네스의 체를 사용한다. 연속된 수의 합에서 경우의 수를 따지므로 투 포인터를 이용해 배열을 이동하며 N이 만들어지는지 확인한다. 🔸 코드 🔸 import java.io.*; import java.util.ArrayList; public class Main { public static void main(String[] args) throws IOException { // Input BufferedReader br = new BufferedRead..
👉 문제링크 27172번: 수 나누기 게임 《보드게임컵》을 준비하다 지친 은하는 보드게임컵 참가자들을 경기장에 몰아넣고 결투를 시키는 게임 《수 나누기 게임》을 만들었습니다. 《수 나누기 게임》의 규칙은 다음과 같습니다. www.acmicpc.net 🔸 문제 분석 🔸 최대 10만개의 서로 다른 수가 적힌 카드가 있다. 이때 수는 1~100만 사이의 정수이다. 카드들을 서로 결투를 벌여서 나누어 떨어지면, 나누는 수는 +1, 나누어진 수는 -1 점을 받는다. 모든 카드들을 결투시켜 최종 점수를 출력한다. 🔸 문제 풀이 🔸 N이 10만이므로 O(NlogN)로 비교하면, 100억번으로 제한 시간인 1초를 초과하게 된다. 에라토스테네스의 체를 활용해서 소수가 아닌, 카드 숫자의 배수 인덱스만 확인해서 결투를 진..
👉 문제링크 13172번: Σ 모듈러가 11에서 1,000,000,007이 되어 답이 달라졌지만, 역시 3을 곱한 다음 1,000,000,007으로 나눈 나머지는 7이 된다. www.acmicpc.net 🔸 문제 분석 🔸 주사위 M개에 대해 i번째 주사위의 면 개수는 Ni, 면의 모든 값의 총합은 Si로 입력된다. 모든 주사위를 던졌을 때의 기대값을 계산한다. S1/N1 + S2/N2 + ... + SM/NM 계산의 어려움 때문에 임의의 분수 a / b를 모듈러를 이용해 (a * b-1 mod x)의 정수 값으로 계산한다. 🔸 문제 풀이 🔸 문제의 수학 이론 설명이 꽤 길지만, 읽어보면 이해 못할 정도는 아니다. 보다 정확한 확률 계산을 위해 모듈러 표현 방식을 사용한다는 것이다. 문제에서 제시된 공식을..
👉 문제링크 1033번: 칵테일 august14는 세상에서 가장 맛있는 칵테일이다. 이 칵테일을 만드는 정확한 방법은 아직 세상에 공개되지 않았지만, 들어가는 재료 N개는 공개되어 있다. 경근이는 인터넷 검색을 통해서 재료 쌍 N www.acmicpc.net 🔸 문제 분석 🔸 10 이하의 자연수 N이 주어지고, N-1 개의 재료 비율이 주어진다. 칵테일을 만드는데 필요한 각 재료의 최소 질량을 출력한다. 🔸 문제 풀이 🔸 기준값을 찾기 위해 입력된 p, q 비율들의 최소공배수를 구한다. N개의 재료와 N-1의 연결 정보는 N개의 노드와 N-1의 간선 정보이므로 트리 형태로 나타낼 수 있다. 한 노드에 값을 넣고 DFS로 인접한 노드를 탐색하며 입력된 비율로 각 노드의 질량 값을 만들어 간다. 모든 노드의..
👉 문제링크 1850번: 최대공약수 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A www.acmicpc.net 🔸 문제 분석 🔸 A와 B의 길이만큼 1로 이루어진 수의 최대공약수를 구하는 문제이다. 🔸 문제 풀이 🔸 실제 수는 아주 긴 1로 이루어진 숫자들이지만, 그냥 A와 B의 최대공약수를 구하면 되는 문제이다. 유클리드호제법을 사용해서 최대공약수를 구하고, 그 수만큼 반복해서 1로 이루어진 수를 만들어 출력한다. 🔸 코드 🔸 import java.io.*; import java.util.StringTokenizer; public cl..