Algorithm/BAEKJOON

[ C / C++ ] 백준 2942 퍼거슨과 사과

곽수진 2022. 3. 31. 19:18
반응형

문제

맨체스터 유나이티드의 감독 퍼거슨은 빨간 사과를 R개, 초록 사과를 G개 가지고 있다. 훈련장에 있는 선수들 중 몇 명에게 나누어 주려고 한다. 단, 선수들이 서로 같은 개수의 사과를 받지 못하면 경기력 저하가 나타날 수 있으므로 모든 선수에게 같은 개수를 주려고 한다. 퍼거슨 감독은 사과를 싫어한다. 따라서 사과가 남으면 안 된다.

예를 들어, 퍼거슨이 빨간 사과를 4개, 초록 사과를 8개 가지고 있다면, 다음과 같이 세가지 방법으로 나누어 줄 수 있다.

  1. 선수 1명에게 빨간 사과 4개와 초록 사과 8개를 줄 수 있다.
  2. 선수 2명에게 빨간 사과 2개와 초록 사과 4개를 각각 줄 수 있다.
  3. 선수 4명에게 빨간 사과 1개와 초록 사과 2개를 각각 줄 수 있다.

퍼거슨이 사과를 나누어 주는 방법을 구하는 프로그램을 작성하시오. 훈련장에 선수는 무한히 많다.

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

int gcd(int red, int green) {
    int n;

    while (green != 0) {
        n = red % green;
        red = green;
        green = n;
    }
    return red;
}

int main() {

    int red, green, n;
    scanf("%d%d", &red, &green);

    n = gcd(red, green);

    for (int i = 1; i <= n; i++) {
        if (n % i == 0) {
            printf("%d %d %d\n", i, red/i, green/i);
        }
    }
}
반응형