작성일 :

문제 링크

26741번 - Farma

설명

머리 수와 다리 수가 주어질 때, 닭과 소의 마릿수를 각각 구하는 문제입니다.

닭은 다리가 2개, 소는 다리가 4개입니다.


접근법

먼저 닭의 수를 A, 소의 수를 B라 하면 두 가지 조건이 성립합니다. 머리 수의 합은 A + B = X이고, 다리 수의 합은 2A + 4B = Y입니다.

다음으로 첫 번째 식에서 A = X - B를 두 번째 식에 대입하면 2(X - B) + 4B = Y가 됩니다. 이를 정리하면 2X + 2B = Y이므로 B = (Y - 2X) / 2로 소의 수를 구할 수 있습니다.

이후 전체 머리 수에서 소의 수를 빼면 닭의 수 A = X - B를 얻습니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;

class Program {
  static void Main() {
    var parts = Console.ReadLine()!.Split();
    var x = long.Parse(parts[0]);
    var y = long.Parse(parts[1]);

    var cows = (y - 2 * x) / 2;
    var chickens = x - cows;

    Console.WriteLine($"{chickens} {cows}");
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  ll x, y; cin >> x >> y;

  ll cows = (y - 2 * x) / 2;
  ll chickens = x - cows;

  cout << chickens << " " << cows << "\n";

  return 0;
}