A. Infinite Sequence
a에서 c의 차이만큼 계속 더해서 b를 만들 수 있는가를 묻는 문제이다.
직접 돌리는건 안된다. 예를 들어, c=0 이기만해도 반복문으로는 안된다.
a+k∗c==b 가 되는 k가 존재하는 가? 다시말해, (b−a)modc==0 인가? 이다.
#include <bits/stdc++.h>
using namespace std;
int main(){
int a, b, c;
while(~scanf("%d %d %d", &a, &b, &c)){
if(c == 0) puts( a == b ? "YES" : "NO" );
else if(c > 0 && b < a) puts("NO");
else if(c < 0 && b > a) puts("NO");
else puts( (b-a)%c == 0 ? "YES":"NO" );
}
return 0;
}
B. Restoring Painting
2x2크기로 묶었을때 나오는 사각형 안의 수들의 합이 모두 같아지게 하는 빈칸의 경우의 수를 묻는 문제였다. 문제의 핵심은 정가운데 ?는 전체 합에 영향을 미치지 않는다는 것이다.
그럼 나머지 모서리에 있는 4개의 ? 중에 하나를 설정해보면 나머지 물음표가 모두 해결되서, 이게 가능한 수인지 판별이 가능하다.
한 모서리 칸을 1~N까지 하나씩 설정하면서 가능한 경우를 세면 된다.
근데 코딩이 말려서 계속 틀렸다. 흠.. 분발해야겠다.
댓글 없음:
댓글 쓰기