1번째 풀이와 2번째 풀이가 있다.
1번째 풀이는 시간초과가 난다.
O(MN) = 16억번
2번째 풀이는
O(M)이다.
-1이 나오는 조건은 x가 N보다 크거나 같을때(스왑하는 과정이나 입력값이 이상할때)
정답을 구하는 방법은
앞 자리 즉 x 의 값으로 y 의 값을 찾아가는 형식이다.
M을 계속 더해줌
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstdio> | |
/** | |
* https://www.acmicpc.net/problem/6064 | |
* BOJ 백준온라인져지 6064 카잉 달력 풀이 | |
*/ | |
int lcm(int a, int b); | |
int gcd(int a, int b); | |
int main(){ | |
int T; | |
scanf("%d", &T); | |
while(T--){ | |
int M,N,x,y; | |
scanf("%d%d%d%d",&M,&N,&x,&y); | |
if(M > N){ | |
int temp; | |
temp = N, N = M, M = temp; | |
temp = x, x = y, y = temp; | |
} | |
int _lcm = lcm(M,N); | |
if(x>=N) printf("-1\n"); | |
else{ | |
int result = x, tempy = x; | |
while(y!=tempy&&_lcm>result){ | |
tempy += M; | |
result += M; | |
if(tempy > N) tempy %= N; | |
} | |
if(_lcm<result||(tempy!=y&&_lcm==result)) printf("-1\n"); | |
else printf("%d\n",result); | |
} | |
} | |
return 0; | |
} | |
int gcd(int a, int b){ | |
if(a == 0) | |
return b; | |
return gcd(b%a, a); | |
} | |
int lcm(int a, int b){ | |
return a * b / gcd(a, b); | |
} | |
/* 첫 번째 풀이 | |
int gcd(int a, int b){ | |
if(a == 0) | |
return b; | |
return gcd(b%a, a); | |
} | |
int lcm(int a, int b){ | |
return a * b / gcd(a, b); | |
} | |
int main(){ | |
int T; | |
scanf("%d", &T); | |
while(T--){ | |
int M,N,x,y,cnt = -1,tempx=0,tempy=0; | |
scanf("%d%d%d%d",&M,&N,&x,&y); | |
for(int i = 0, _lcm = lcm(M,N); i<_lcm; i++){ | |
tempx = tempx % M + 1; | |
tempy = tempy % N + 1; | |
if(x == tempx && y == tempy){ | |
cnt = ++i; | |
break; | |
} | |
} | |
printf("%d\n", cnt); | |
} | |
return 0; | |
} | |
*/ |
(tempy!=y&&_lcm==result)의 조건을 안넣어서 계속 틀렸었다.
(tempy!=y&&_lcm==result)를 넣지 않으면 거의다 lcm(M,N)의 값이 뜬다.
'IT > 알고리즘' 카테고리의 다른 글
BOJ 백준온라인져지 1786 찾기 풀이 (1) | 2017.11.19 |
---|---|
BOJ 백준온라인져지 5525 IOIOI 풀이(KMP) (0) | 2017.11.16 |
BOJ 백준온라인져지 1475 방 번호 풀이 (0) | 2017.11.13 |
BOJ 백준온라인져지 2775 부녀회장이 될테야 풀이 (0) | 2017.11.12 |
BOJ 백준온라인져지 10250 ACM 호텔 풀이 (0) | 2017.11.12 |