[백준 17256] 달달함이 넘쳐흘러 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
케이크 수는 세 개의 정수 (x, y, z)로 구성됩니다.
두 케이크 수 a와 b에 대한 연산 🍰는 a 🍰 b = (a.z + b.x, a.y × b.y, a.x + b.z)로 정의됩니다.
케이크 수 a와 c가 주어질 때, 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;
}