목록정수론 (6)
레야몬
1. 문제 M개의 자연수 N과 정수 K가 주어졌을 때 이항 계수 \(_{n}C_{k}\)를 \(1,000,000,007\)로 나눈 나머지를 구하는 프로그램을 작성하시오 - 1 - \(M(1 \leq M \leq 100,000)\) - M개의 줄 - \(N, K(1 \leq N \leq 4,000,000, 0 \leq K \leq N)\) M개의 줄에 \(_{n}C_{k}\)를 \(1,000,000,007\)로 나눈 나머지를 출력한다. 2. 재정의 X 3. 해결 방법 factorial값을 모두 저정한 다음 페르마의 소정리를 이용해 간단하게 풀면 된다. 4. 실수한 점, 개선할 점 항상 나오지만 자료형 범위 조심하자 분할 정복 사용할 때 재귀 함수를 사용하지 않고 반복문을 이용해하는 방법도 있었다. 이렇게 ..
1. 문제 자연수 N과 정수 K가 주어졌을 때 이항 계수 nCk를 M으로 나눈 나머지를 구하는 프로그램을 작성하시오. - 1 - \(N, K, M(1 \leq N \leq 10^{18}, 0 \leq K \leq N, 2 \leq M \leq 2,000, M is prime)\) \(_{n}C_{k}\)를 \(M\)으로 나눈 나머지를 출력한다. 2. 재정의 X 3. 해결 방법 뤼카의 정리를 이용하면 간단하게 풀 수 있다. 4. 실수한 점, 개선할 점 binomial을 사용할 때 dp를 사용하지 않고 Euler's little theorem을 사용하면 0ms로 풀 수 있다. #include #include using namespace std; typedef long long ll; const int MAX..
1. 문제 \(_{n}C_{k} \% 1,000,000,007\)을 구하시오 - 1 - \(N, K(1 \leq N \leq 4,000,000, 0 \leq k \leq N)\) \(_{n}C_{k} \% 1,000,000,007\) 2. 재정의 X 3. 해결 방법 \(P = N! \% M\)을 구하기 \(S = (N-K)! \times k! \% M\) 구하기 \(S^{1,000,000,005} \% M\) 구하기 \(P \times S \% M\) 구하기 4. 실수한 점, 개선할 점 nCr을 팩토리얼로 계산할 때 반복문 하나로 줄일 수 있다. #include using namespace std; typedef long long ll; // 소수 const int mod = 1000000007; // ..
1. 문제 숫자 N개가 있다. 이를 M으로 나누었을 때 나머지가 모두 같게 되는 M을 찾고자 한다. \((M > 1)\) 가능한 M을 모두 찾으시오. - 1 - \(N(2 \leq N \leq 100)\) - N개의 줄 - \(1 \leq num \leq 1,000,000,000\) 같은 수가 2번 이상 주어지지 않음. 항상 M이 하나 이상 존재함 가능한 M을 공백으로 구분하여 모두 출력한다. M은 증가하는 순서대로 출력한다. 2. 재정의 \(num[1] \equiv ... \equiv num[N-1] (mod M)\)을 만족하는 1이 아닌 M 모두 구하기 3. 해결 방법 num[i] - num[1]의 GCD의 1이 아닌 모든 약수를 구한다. 유클리드 호제법을 이용하여 GCD를 구하고 sqrt(GCD)까..
아직 풀지는 못했고 언젠가는 정수론을 공부해야한다고 생각하기 때문에 정수론을 공부하고나서 풀어보려고 한다. 정수론 책 pdf https://blog.naver.com/PostView.nhn?blogId=mindo1103&logNo=221340552620&from=search&redirect=Log&widgetTypeCall=true&directAccess=false 정수론의 기초 https://divyanshkumarsblog.wordpress.com/2017/05/30/number-theory-i/ 그래서 결론은? https://divyanshkumarsblog.wordpress.com/2017/05/30/number-theory-ii-advanced-modular-arithmetic/ 중국인의 나머지..
1. 문제를 읽고 이해한다. 자연수 n \(1\leq n\leq 10^{12}\) GCD(n, k) = 1을 만족하는 자연수 $$ 1 \leq k \leq n $$ 의 개수 출력 2. 문제를 익숙한 용어로 재정의한다. n과 서로소인 수의 개수 출력(1도 포함) 3. 어떻게 해결할지 계획을 세운다. 에라토스테네스의 체로 소수를 구하기( $$ \sqrt{n} $$ 가지) O( $$ \sqrt{n} $$ ) 오일러 피 하수(Euler phi function)을 사용하기 4. 계획을 검증한다. O( $$ \sqrt{n} $$ ) = $$ \10^{6} $$ = 1, 000, 000 5. 프로그램으로 구현한다. 6. 어떻게 풀었는지 돌아보고, 개선할 방법이 있는지 찾아본다. n과 서로소가 아니라 n의 소인수를 구..