[백준 34019] [G] Grounded Number
이 작을 때부터 몇 개를 넣어서 직접 시뮬레이션해 보면, 이 홀수일 때와 짝수일 때로 결과가 나뉨을 알 수 있다. 하지만 제한까지 모든 에 대해 성립함을 증명하는 것은 꽤나 어렵다.
이 홀수라면 와 같은 홀짝성을 가진다. 각 연산마다 는 홀짝이 바뀌고, 역시 또는 을 통해 홀짝이 바뀌기 때문이다.
일 때 자명하게 No이고, 처음 시작 때 라고 하자. 홀짝성이 같기 때문에 이 감소하다가 인 순간이 오거나, 혹은 오지 않는다면 항상 가 유지되거나 둘 중 하나이다.
가 유지되면 0에 도달할 수 없으니 No이고, 인 순간이 온다면 그 순간부터 과 는 같이 1씩 증가하며 결국 발산하므로 0에 도달할 수 없어 No이다.
마찬가지로 이 짝수라면, 와 다른 홀짝성을 가진다.
라고 하자. 홀짝성이 다르기 때문에 인 순간은 오지 않는다. 또한 가 되는 순간 이 의 배수가 될 수 없으므로 은 계속 작아지기 때문에 은 0이 될 수 있다.
따라서 이 짝수인데 0에 도달할 수 없는 경우는 항상 가 유지되는 순간밖에 없다.
가 짝수일 때, 은 항상 홀수이다. 이는 가 짝수일 때 이 의 배수가 될 수 없다는 걸 의미한다. 따라서 적어도 가 짝수인 순간에 은 감소한다. 만약 이 가 홀수인 모든 순간에 이 의 배수라서 증가한다고 하자. 그렇다고 하더라도, 결코 는 유지될 수 없다. 는 매 시행마다 1씩 단조증가하지만, 은 2번의 시행마다 한 번의 증가와 한 번의 감소를 거쳐 원래 으로 돌아오기 때문이다. 결국 인 순간이 오게 되고, 앞서 말했듯 홀짝성이 다르기 때문에 인 순간이 오지 않아 가 되는 순간 0에 도달하게 되어 0이 될 수 있다.
따라서 이 홀수일 때 No이고, 이 짝수일 때 Yes이다.
process.stdin.on('data',e=>console.log(BigInt(String(e))%2n == 1n?'No':'Yes'))
댓글