문제
세 수의 평균이 a이고 중앙값이 b일 때, 나머지 한 수를 구하라.
입력
여러 줄에 a와 b가 주어지며, 모두 0이면 종료한다.
출력
각 케이스마다 나머지 수를 출력한다.
예제
| 입력 | 출력 |
|---|---|
2 3 0 0 | 1 |
풀이
세 수의 합에서 알려진 두 수를 빼서 나머지를 구한다.
- 세 수의 합은
3 * a이다 - 중앙값 b와 나머지 한 수의 합이
3a - b이므로, 답은3a - 2b... 가 아니라2a - b이다 - 실제로 세 수 중 두 수의 평균이 a이고 중앙값이 b이므로, 나머지 =
2a - b
핵심 아이디어: 두 수의 평균이 a이면 합은 2a이고, 하나가 b이면 나머지는 2a - b이다.
코드
#include <iostream>
using namespace std;
int main()
{
int a, b;
while (1)
{
cin >> a >> b;
if (a == 0 && b == 0)
{
break;
}
cout << 2 * a - b << "\n";
}
return 0;
}복잡도
- 시간: O(T)
- 공간: O(1)