작성일 :

문제 링크

17256번 - 달달함이 넘쳐흘러

설명

케이크 수는 세 개의 정수 (x, y, z)로 구성됩니다.

두 케이크 수 ab에 대한 연산 🍰a 🍰 b = (a.z + b.x, a.y × b.y, a.x + b.z)로 정의됩니다.

케이크 수 ac가 주어질 때, a 🍰 b = c를 만족하는 케이크 수 b를 구해야 합니다.


접근법

a 🍰 b = c의 정의에 따라 각 좌표별로 방정식을 세우면 c.x = a.z + b.x, c.y = a.y × b.y, c.z = a.x + b.z입니다.

이를 b에 대해 정리하면 b.x = c.x - a.z, b.y = c.y / a.y, b.z = c.z - a.x가 됩니다.

문제 조건상 항상 나누어떨어지므로, 이 식을 그대로 계산하여 출력하면 됩니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;

namespace Solution {
  class Program {
    struct Cake { public int x, y, z; }

    static void Main(string[] args) {
      var aTokens = Console.ReadLine()!.Split();
      var cTokens = Console.ReadLine()!.Split();

      var a = new Cake {
        x = int.Parse(aTokens[0]),
        y = int.Parse(aTokens[1]),
        z = int.Parse(aTokens[2])
      };
      var c = new Cake {
        x = int.Parse(cTokens[0]),
        y = int.Parse(cTokens[1]),
        z = int.Parse(cTokens[2])
      };

      var bx = c.x - a.z;
      var by = c.y / a.y;
      var bz = c.z - a.x;

      Console.WriteLine($"{bx} {by} {bz}");
    }
  }
}

C++

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

struct Cake { int x, y, z; };

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

  Cake a, c;
  cin >> a.x >> a.y >> a.z;
  cin >> c.x >> c.y >> c.z;

  int bx = c.x - a.z;
  int by = c.y / a.y;
  int bz = c.z - a.x;

  cout << bx << " " << by << " " << bz << "\n";

  return 0;
}