Rose   5년 전

  1. 일단 주어진 배열의 수들을 모두 정렬해놓고, 어떤수가 그 앞 인덱스의 수(배열 안의 더 작은 수) 로 나누어지면 없앱니다.왜냐하면 어차피 없애질 수이기 때문입니다.
  2. 그리고 이제 남아있는 수들의 조합을 구합니다. (1개, 2개,---n개까지)
  3. 구한 조합에 들어있는 모든 수들의 최소공배수를 유클리드 호제법 으로 구해줍니다.
  4. 그리고 수의 개수에따라 만약 홀수개라면 (n/최소공배수)를 더해주고, 짝수개라면 (n/최소공배수)를빼줍니다. 왜냐하면 중복되는 수를 카운트하기 위하여 그렇게 하는데, 조합개수가 하나인수는  n개중에서 어떤수의 배수이고, 2개는 두수의 최소공배수인데, 그전에 하나를 지울때 중복으로 지워진것을 카운트하기 위함입니다. 그렇게 해서1개 조합에서  n개조합까지 이전과 같은 방식으로 빼거나 더해줍니다.
  5. 그렇게하면 지워지는 수의 개수가 구해지는데, 이제 그 값을 n에서 빼줍니다.

분명히 로직이 어딘가 잘못되어서 틀린 것 같은데 틀린곳 지적해주시면 정말 감사하겠습니다..

chogahui05   5년 전

int로 커버되는 범위인가요?

chogahui05   5년 전

아.. 저도 잘못 풀었네요.

회 먹고 와서 뚝배기 깨 봅니다.

Rose   5년 전

회맛있게드세요

갔다와서 저좀알려주세요 ㅜㅜ

Rose   5년 전

헐미쳤따 unsigned long long 으로 바꾸니까 바로통과되네요 감사합니다.

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