Algorithm/Jungol (수학1) 8

[5545] 연필공장

문제 연필 공장에서는 완성되지 않은 연필에 대하여 도색 기계로 도색 작업을 통해 색을 입히고, 광택 기계로 광택 작업을 하여 윤기가 나게하는 두 가지의 공정을 순서대로 적용시켜 연필을 완성시킨다. 그러나 두 기계 모두 좋은 기계가 아니어서 종종 문제를 일으킨다. 도색 기계는 P개의 연필을 성공적으로 도색하고 바로 직후 하나의 연필의 도색을 실패한다. ​광택 기계는 V개의 연필을 성공적으로 작업한 직후 하나의 연필의 광택 작업을 실패한다. ​그리하여 연필 공장은 세 종류의 다른 불량 연필을 만들어낸다: 두 작업 모두 실패한 연필, 도색을 실패한 연필, 광택을 실패한 연필. 세 정수 P,V,K가 주어지면 K개의 연필을 공정하는 작업이 끝난 후 네 종류의 서로 다른 연필의 개수를 출력하는 프로그램을 작성합니다..

[1002] 6. 최대공약수, 최소공배수

문제 n개의 정수를 입력받아서 최대공약수와 최소공배수를 구하는 프로그램을 작성하여 보자. 입력 첫째 줄에 N (2≤N≤10) 을 입력 받고 다음 줄에 N개의 정수를 공백으로 구분하여 입력 받는다. 입력 받는 정수는 2이상 10,000 이하이다. 데이터의 크기가 주어진 범위를 벗어나는 입력은 없다. 출력 입력받은 정수들의 최대공약수와 최소공배수를 공백으로 구분하여 출력한다. 최소공배수는 20억 이하의 정수이다. 예제 입력 3 2 8 10 예제 출력 2 40 [1658]문제를 조금 확장한 형태인데, 여러개의 최대공약수와 최소공배수를 요구하고 있다. 가장 효율적인 방법(가장 많은 수의 최대공약수를 빠른 시간에 구하는 방법) 은 (1) a, b의 최대공약수를 구하고 (2) c의 최대 공약수를 구하는 것이다. <..

[1658] 최대공약수와 최소공배수

문제 두개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력 입력 파일의 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. 출력 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. 예제 입력 24 18 예제 출력 6 72 최대공약수(GCD) : 공약수는 최대공약수의 약수이다. - 공약수 : 어떤 두 수 이상의 공통인 약수 - 최대공약수 : 공약수들 중 가장 큰 수 최대공약수를 구하기 위한 함수 int gcd_get(int x, int y) { int gcd; for (int i = 1; i

[2809] 약수

문제 한 개의 정수를 입력받아 입력받은 정수의 약수를 모두 출력하는 프로그램을 작성하시오. 입력 정수 N이 주어진다. (2 ≤ N ≤ 21억) 출력 N의 약수를 작은 수부터 차례로 모두 출력한다. 예제 입력 24 예제 출력 1 2 3 4 6 8 12 24 처리조건 약수 : 어떤 수를 나누어 떨어지게 하는 수 - a * b = c 일 경우 a 와 b는 c의 약수가 되며, 어떤 수 i가 N의 약수일 경우 N % i = 0 이다. - 1은 모든 수의 약수이며 자기 자신 또한 약수가 된다. 따라서 1보다 큰 자연수라면 반드시 2개 이상의 약수를 가지게 된다. - a * b = c 일때 a가 작은수인 경우 b = c /a 로 접근이 가능하며, a * a 0; i--) { printf("%d ", arr[i - 1..

[1402] 약수구하기

문제 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 6을 예로 들면 6 ÷ 1 = 6 … 0 6 ÷ 2 = 3 … 0 6 ÷ 3 = 2 … 0 6 ÷ 4 = 1 … 2 6 ÷ 5 = 1 … 1 6 ÷ 6 = 1 … 0 그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다. 두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. 출력 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력..

[1430] 숫자의 개수

문제 세 개의 자연수 A, B, C가 주어질 때 A×B×C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17,037,300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 입력 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고 1,000보다 작은 자연수이다. 출력 첫째 줄에는 A×B×C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A×B×C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차..

[1691] 곱셈

문제 (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. (1)과 (2)위치에 들어갈 세 자리 자연 수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다. 출력 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. 예제 입력 472 385 예제 출력 2360 3776 1416 181720 - 입력받을 변수 a, b를 선언하고 scanf 함수로 입력받는다. int a, b; scanf("%d %d", &a, &b); 출력형식 - 입력받은 변수 b의 1의 자리, 10의 자리, 100의..