[Baekjoon][C++] 1476λ² λ μ§κ³μ° λ¬Έμ μ€λͺ λ° μ½λ
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++;
}
}