Baekjoon/cpp

19532번 - 수학은 비대면강의입니다 C++

_yh47 2023. 7. 3. 15:40

문제 설명


19532번 - 수학은 비대면강의입니다.

https://www.acmicpc.net/problem/19532

 

19532번: 수학은 비대면강의입니다

정수 $a$, $b$, $c$, $d$, $e$, $f$가 공백으로 구분되어 차례대로 주어진다. ($-999 \leq a,b,c,d,e,f \leq 999$) 문제에서 언급한 방정식을 만족하는 $\left(x,y\right)$가 유일하게 존재하고, 이 때 $x$와 $y$가 각각 $-

www.acmicpc.net


[브루트 포스 문제]

 

각각 -999 이상이고 999이하인 (x, y)을 찾는 문제 입니다.

모든 경우의 수는 2000 * 2000이라 O($n^2$)인 완전탐색으로 풀어도 되지만 더 깔끔하고 효율적인 방법이

존재합니다.

 

연립 방정식을 풀 때 서로 다른 방정식의 계수를 맞추어 x 또는 y를 없애 값을 구하는 방법을 사용합니다.

 

x 값 구하기


연립 방정식의 y 계수를 동일하게 만든 후 x만 남도록 두 방정식을 뺍니다.

 

$\left\{\begin{matrix}
 & ax + by = c \\
 & dx + ey = f \\
\end{matrix}\right.
 \Rightarrow \left\{\begin{matrix}
 & aex + bey = ce \\
 & bdx + bey = bf \\
\end{matrix}\right. \Rightarrow (ae-bd)x = ce-bf$

 

 

$\\ \therefore x = \frac{ce - bf}{ae - bd}$

 

 

Y값 구하기


동일하게 연립 방정식의 x 계수를 동일하게 만든 후 y만 남도록 두 방정식을 뺍니다.

 

$ \left\{\begin{matrix}
 & ax + by = c \\
 & dx + ey = f \\
\end{matrix}\right.
 \Rightarrow \left\{\begin{matrix}
 & adx + bdy = cd \\
 & adx + aey = af \\
\end{matrix}\right. \Rightarrow (bd-ae)y = cd-af \\
$

 

$\\ \therefore y = \frac{cd - af}{bd-ae}$

 

 

코드


#include<iostream>

int main()
{
	int a, b, c, d, e, f;

	std::cin >> a >> b >> c >> d >> e >> f;
	
    
	int y = (c * d - a * f) / (b * d - a * e);
	int x = (c * e - b * f) / (a * e - b * d);
	
	//결과
	std::cout << x << ' ' << y;
    
	return 0;
}
반응형