Logo
(追記) (追記ここまで)

소수상근수 런타임에러 도와주세요 ᅲ

9421번 - 소수상근수

암만 머리를 싸매도 런타임에러를 탈출하지 못하네요..

문제점을 찾아주시면 감사하겠습니다 ᅲᅲ

/*

해결했습니다..

상상도 못한 곳에서 런타임에러가 떴네요 앞으로 주의하겠습니다ᅲ

제가 eratos의 함수를 int eratos() 로 구현 했습니다만,, return을 해주지 않아 발생한 듯 합니다.

int를 void로 고치니 잘 작동하네요..

평소 이런 부분은 별 생각안하고 코딩했는데.. 혼자 깨닫고 갑니다

*/

(削除) 먼저 에라토스테네스의 체로 E배열에 소수 여부를 정해 놓습니다 ( 0 --> 소수 ) (削除ここまで)

(削除) 그 다음 i = 2부터 n까지 check()함수를 가게 되는데 (削除ここまで)

(削除) check(int n)함수는 대략 다음처럼 작동하게 했습니다. (削除ここまで)

(削除) 1. n == 1이거나 S[n] = 'O'일 경우 2를 리턴하게 했습니다. ( 'O'는 상근수라는 의미이고 2는 상근수일 때 리턴값 입니다) (削除ここまで)

(削除) 2. 만약 S[n] == '#"이라면 상근수가 아니라는 의미이므로 1을 리턴하게 했습니다. (削除ここまで)

(削除) 3. 위 둘중에 아무것도 아니라면 일단 S[n]에 '#'을 넣습니다 ( 만약 나중에 '#'을 밟게 되면 상근수가 아니게 되므로??) (削除ここまで)

(削除) 4. check(rint(n))를 호출합니다 rint(n) 함수는 n의 각 자릿수의 제곱 합을 리턴해줍니다 (削除ここまで)

(削除) 5. flag가 check(rint(n))의 반환값(1, 2) 중 하나를 받게되는데 (削除ここまで)

(削除) 2일 경우에는 상근수라는 의미로 판단하여 경로를 타고오면서 넣어둔 '#'을 전부 'O'로 바꿉니다 (削除ここまで)

(削除) 1일 경우에는 상근수가 아니므로 사전에 넣어둔 '#'을 바꾸지 않고 바로 1을 리턴합니다 (削除ここまで)

(削除) 이런식으로 n까지 상근수 여부를 구해놓고 E[i] == 0 && S[i] == 'O'를 만족시키는 수를 출력하게끔 헀는데 (削除ここまで)

(削除) 런타임 원인을 잘 모르겠습니다.. ᅲᅲ (削除ここまで)

(削除) 그냥 각 소수마다 브루트포싱을 해서 풀어도 괜찮지 않을까 생각중인데.. 이 코드에 미련이 남아서 질문을 올립니더... (削除ここまで)

(削除) /* 추가 */ (削除ここまで)

(削除) 새로 check()함수를 만들어서 그것도 제출해봤으나 런타임이네요,,, (削除ここまで)

(削除) 2번째 코드는 아래에 새로 추가했습니다 (削除ここまで)

(削除) 이번에는 직접 부르트포싱해서 알아내는 방식으로 해봤는데도 런타임이 뜨네요.. ᅲᅲᅲ (削除ここまで)

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

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /