게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[질문글] 입력받은 X의 제곱을 구해 뒷자릿수에 X가 포함됬나 방법을 찾
게시물ID : programmer_18163짧은주소 복사하기
작성자 : 노력의천재
추천 : 0
조회수 : 747회
댓글수 : 13개
등록시간 : 2016/08/13 14:31:02
옵션
  • 창작글
  • 본인삭제금지
데굴데굴 굴러 지나가는 프로그래머 지망생입니다. 제목이 짤리는군요.

질문은 아래 조건에 부합하는 수를 찾는 방법에 대한 겁니다.

조건 : 0보다 큰 어떤 수 X가 있을 때, X^2 의 자릿수(뒷자리부터)에서 X가 포함되는걸 찾고있습니다. 예를 들면 아래와 같습니다.

1 x 1 = 1
5 x 5 = 25
6 x 6 = 36
25 x 25 = 625
625 x 625 = 390,625

5의 제곱은 25이고 뒤에서부터 자릿수를 살펴보면 5가 포함되어있죠. 이런수들을 찾는걸 해보고 있었습니다.
예를들어 1부터 1,000,000 사이의 수중에서 앞서말한 성질을 지니는 수는 뭐가 있을까 이런식으로 말이죠. 열심히 없는머리통 굴려가며 생각해보니
25 * 25  = 25 * ( 25 -1) 이면, 600이고 600이라는 숫자는 6 * 100 ( = 10^2) 이고 100 이라는 숫자는 2^2 * 5^2 로 구성이 되니까 ( 2^n * 5^n = 10^n)
25 * (25-1)이 부분이 곱하려는 두 숫자가 각각 2^n와 5^n 을 인수로 가지고 있어야하지 않나 라고 생각까지 했습니다. 그래서.. 생각해낸 방법이
어떤수 x에 대해서 위에 언급한 조건을 언급하나 확인하기 위해 x와 x-1에 대해서 2^n 과 5^n 의 인수를 가지고있나 확인하는거였습니다. 그런데 이렇게하려니 만약 1억이라는 큰 숫자에 대해 인수를 찾으려니 시간이 걸리고.. 이래저래 쓸데없이 복잡해지는게 아닌가 싶어서 말이죠.

이 방법 말고 맨처음에 생각했던건 어떤 수 x를 제곱해서 뒤에서부터 자릿수를 검사해서 x가 포함되어있는지 찾으려고 했으나 아시다시피 숫자가 20억이라던가 굉장히 큰 숫자인경우 오버플로우가 생기니, BigInteger 같은 클래스를 만들어서 써야하나 고민하다가 수학적인 방법으로보면 훨씬 간편하고 좋은게 있지않을까 싶어서 뭔가 더 좋은 방법이 있지않을까 해서 글을 남겨봅니다. :)
꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호