본문 바로가기

728x90

수학3

[백준알고리즘] 2004번: 조합 0의 개수 -Java [백준알고리즘] 2004번: 조합 0의 개수 -Java https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 n, m(0≤m≤n≤2,000,000,000, n!=0)이 들어온다. www.acmicpc.net 이전 문제였던 팩토리얼 0의 개수와는 조금 다르다. 팩토리얼 0의 개수 문제에서는 5로 나누고 5의 제곱으로 나누고 했던 이유는 5 이전에 이미 2가 존재해서 10이 당연히 되기 때문에 5의 제곱수들로만 풀어도 가능했다. 하지만 이항계수에서는 분자를 분모로 약분할 수 있기 때문에 2의 존재 가능성의 여부도 따져줘야 한다. 즉 약분을 했을 때 10을 몇 개나 곱하느냐를 구하면 되는 문제이다. 따라서 5의 개수와 2의 개수를 각각 구해주고 둘 중의.. 더보기
[백준알고리즘] 1676번: 팩토리얼 0의 개수 -Python [백준알고리즘] 1676번: 팩토리얼 0의 개수 -Python https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 오 되게 신기했던 문제다. 근데 생각보다 쉬웠다. 일단 팩토리얼을 진행한 후 0이 1의 자리부터 몇 개까지 있는가에 대한 문제이다. 테스트 케이스로 나와있는 10!의 경우 3628800이 나온다. 하지만 무작정 N!를 진행한 후에 0의 개수를 카운팅 하는 문제는 아닐 것이다. 일단 주어진 범위에서도 500!를 하더라도 엄청나게 큰 수가 나온다... 이거는 각자 계산을 해보도록 하자 :) 여기서 그러면 규칙이 있을텐데 그 .. 더보기
[백준알고리즘] 11050번: 이항계수 1 -C [백준알고리즘] 11050번: 이항계수 1 -C https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 이항 계수의 문지입니다. 이 문제는 범위가 짧기 때문에 이항 계수의 식을 그대로 넣어서 풀어주도록 합니다. nCk = n! / (k! * (n-k)!) 이때 저는 범위만큼 팩토리얼을 배열에 저장을 한 후 가져다가 쓰는 방식을 사용했습니다. #include int factorial_arr[11]; void factorial(void); int main(void){ int N, K; scanf("%d", &N); scanf("%.. 더보기
[백준알고리즘] 3036번: 링 -C [백준알고리즘] 3036번: 링 -C https://www.acmicpc.net/problem/3036 3036번: 링 문제 상근이는 창고에서 링 N개를 발견했다. 상근이는 각각의 링이 앞에 있는 링과 뒤에 있는 링과 접하도록 바닥에 내려놓았다. 상근이는 첫 번째 링을 돌리기 시작했고, 나머지 링도 같이 돌아간다는 사실을 발견했다. 나머지 링은 첫 번째 링 보다 빠르게 돌아가기도 했고, 느리게 돌아가기도 했다. 이렇게 링을 돌리다 보니 첫 번째 링을 한 바퀴 돌리면, 나머지 링은 몇 바퀴 도는지 궁금해졌다. 링의 반지름이 주어진다. 이때, 첫 번째 링을 한 바퀴 돌리면, www.acmicpc.net 이 문제는 간단했습니다. 출력은 (첫번째 링의 반지름 / i번째 링의 반지름)을 약분해서 구하면 됩니다. .. 더보기
[백준알고리즘] 2981번: 검문 -Python [백준알고리즘] 2981번: 검문 -Python https://www.acmicpc.net/problem/2981 2981번: 검문 문제 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간을 때우기 위해서 수학 게임을 하기로 했다. 먼저 근처에 보이는 숫자 N개를 종이에 적는다. 그 다음, 종이에 적은 수를 M으로 나누었을 때, 나머지가 모두 같게 되는 M을 모두 찾으려고 한다. M은 1보다 커야 한다. N개의 수가 주어졌을 때, 가능한 M을 모두 찾는 www.acmicpc.net 이번 문제는 정답률이 21%인 난이도 높은 문제이다... 뭔가 감은 잡힌 것 같은데 식으로 만.. 더보기
[백준알고리즘] 11653번: 소인수분해 -Python [백준알고리즘] 11653번: 소인수분해 -Python https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 소인수 분해 문제이다. 그냥 인수만 구하라고 한다면 2부터 sqrt(N)까지 반복하면서 나누어 떨어지는지 확인을 하면서 리스트에 넣으면 된다. 여기서 적용한다면 for i in range(2, sqrt(N)+1) 일 것이다. 파이썬에서 sqrt()는 math 모듈을 import해야한다. 그런데 그냥 소인수들을 구하라고 했기 때문에 N을 직접 나눠가면서 print 하도록 했다. import sys N = int(sys.stdin.readline()) while N.. 더보기

728x90