1476๋ฒ: ๋ ์ง ๊ณ์ฐ
์ค๊ท๊ฐ ์ฌ๋ ๋๋ผ๋ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ฐ๋์ ๋ค๋ฅธ ๋ฐฉ์์ ์ด์ฉํ๋ค. ์ค๊ท๊ฐ ์ฌ๋ ๋๋ผ์์๋ ์ 3๊ฐ๋ฅผ ์ด์ฉํด์ ์ฐ๋๋ฅผ ๋ํ๋ธ๋ค. ๊ฐ๊ฐ์ ์๋ ์ง๊ตฌ, ํ์, ๊ทธ๋ฆฌ๊ณ ๋ฌ์ ๋ํ๋ธ๋ค. ์ง๊ตฌ๋ฅผ ๋ํ
www.acmicpc.net
โท ๋ฌธ์ ์ค๋ช
์ค๊ท๊ฐ ์ฌ๋ ๋๋ผ๋ ์ฐ๋๋ฅผ ํํํ ๋ E, S, M ์ธ ๋ฌธ์๋ก ํํํ๋ค.
๊ฐ๊ฐ์ ๋ฌธ์๊ฐ ๊ฐ์ง๋ ๋ฒ์๋ 1 โค E โค 15, 1 โค S โค 28, 1 โค M โค 19 ์ด๋ค.
E, S, M์ด ์ฃผ์ด์ง ๋, E S M์ผ๋ก ํ์๋๋ ๊ฐ์ฅ ๋น ๋ฅธ ์ฐ๋๋ฅผ ์ถ๋ ฅํ์.
โท ๋ฌธ์ ํ์ด
์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ ํํํ ์ ์๋ ๋ ๋๋ 15 * 28 * 19 = 7980๋ ๊น์ง ์ด๋ฏ๋ก
๋ธ๋ฃจํธํฌ์ค ๋ฐฉ๋ฒ์ผ๋ก 1๋ ๋ถํฐ 7980๋ ๊น์ง ๊ตฌํ๋ค๊ฐ ์ ๋ต๊ณผ ๊ฐ์์ง๋ ์๊ฐ์ ์ฐพ์ผ๋ฉด ๋๋ค.
์ด ๋, ๋ฌธ์ ์์ ์ฃผ์ด์ง E, S, M์ ๊ฐ์
year mod 15 = E,
year mod 28 = S,
year mod 19 = M ๋ฅผ ๋ํ๋ด๋ฏ๋ก(๋๋จธ์ง ๊ฐ)
1๋ ๋ถํฐ 7980๋ ๊น์ง ์ฐ๋๋ฅผ ์ฆ๊ฐ์ํฌ ๋,
ํ์ฌ ์ฐ๋ year๋ฅผ year % 15 && year % 28 && year % 19 ๋ก ๊ณ์ฐํ์ ๋,
๊ทธ ๊ฐ๋ค์ด ์ฃผ์ด์ง E, S, M์ ๊ฐ๊ณผ ๋ชจ๋ ์ผ์นํ๋ค๋ฉด ํ์ฌ์ ์ฐ๋๊ฐ ์ ๋ต ์ฐ๋์ด๋ค.
โท ์๊ฐ๋ณต์ก๋
ํํํ ์ ์๋ ๋ ๋๋ฅผ N์ด๋ผ ํ๋ฉด, N๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๊ฐ ํ์ํ๋ฏ๋ก O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
โท ์ ๋ต์ฝ๋
#include <iostream>
using namespace std;
void Input();
void CalculateYear(int E, int S, int M);
int main() {
Input();
return 0;
}
void Input() {
int E, S, M;
cin >> E >> S >> M;
CalculateYear(E, S, M);
}
void CalculateYear(int E, int S, int M) {
int e = 1, s = 1, m = 1;
for (int year = 1; ; year++) {
if (e % 15 == E % 15 &&
s % 28 == S % 28 &&
m % 19 == M % 19){
cout << year;
break;
}e++, s++, m++;
}
}