aigorithm   3년 전

K값을 소인수분해한 결과를 vector에 저장하고, 그를 통해서 N!에서 찾아 계산하는 방법으로 구현했습니다.

그런데 계속 틀렸습니다가 뜹니다..  

어디를 놓치고 있는걸까요? ㅠㅠ 반례를 못찾겠습니다. 

dldyddlwl   3년 전

이 경우를 생각해봅시다. 

2 2를 넣어보시면, 실제로는 2! 과 2니까, 2와2 입니다. 따라서, 최대공약수는 2가 나와야 합니다. 그런데 글쓴이님의 코드는 1이 나옵니다.

for (int i = 2; i*i <= K; i++) 이 조건을 보시면, K가 2일 때는 i*i <= K, (i는 2부터 시작하므로 ) 첫 조건 4 <= K = 2 가 되므로, for loop에 들어가지도 못합니다.

그리고 여기 if(K > 1 && K < N) 이 부분을 보시면, N이 2로 주어진다면 K값과 관계없이, if문 안으로 들어갈 수 없습니다. 따라서, 2 2의 경우에는 제대로 처리될 수가 없습니다.

  

aigorithm   3년 전

아!! 제가 그 부분 코드를 잘못짰었네요 ㅠㅠ 정말 정말 감사합니다. for loop부분은 전혀 생각하지 못하고 있었네요. 좋은 답변 감사드립니다!!!

댓글을 작성하려면 로그인해야 합니다.