https://www.acmicpc.net/problem/1476
나머지 연산을 이용해서 연도가 들어날때마다 각 범위를 나머지 연산해서 입력값이랑 같아지면 그 때의 년도를 출력한다.
from sys import stdin
input = stdin.readline
E, S, M = map(int,input().split())
e, s, m = 0, 0, 0
i = 0
while True:
e = i%15+1 # 1~15
s = i%28+1 # 1~28
m = i%19+1 # 1~19
#목표 연도라면
if e == E and s == S and m == M:
#i를 0부터 시작했기때문에 +1해준다.
print(i+1)
break
i+=1
증가하는 연도(year)에서 입력받은 연도(E,S,M)을 빼고, 각 범위의 최대 값으로 나눴을 때 나머지가 0이라면(배수라면) 그 연도(year)가 준규가 사는 나라의 연도일 것이다.
입력받은 E가 1이라면 우리 연도로 계산 했을때 1, 16, 31을 의심해 볼 수 있다. 즉 (1-1)%15==0이고, (16-1)%15==0이다. 나머지를 빼면 배수가 된다.
from sys import stdin
input = stdin.readline
E, S, M = map(int,input().split())
year = 1
while True:
#연도(year)에서 주어진 연도(E,S,M)를 뺏을 때의 나머지가 모두 0이라면 준규가 사는 나라의 연도가 될것이다.
if (year-E)%15==0 and (year-S)%28 == 0 and (year-M)%19 == 0:
break
year+=1
print(year)