본문 바로가기
반응형

프로젝트 오일러69

8. 프로젝트 오일러 #8 : 가장 큰 곱하기 수 구하기. 이 문제는 문서에서 단어찾기에도 이용할 수 있는 문제입니다. 단어찾기의 경우에는 보통 더하기 해시를 이용하든지 하겠지만, 여기서는 곱하기이기 때문에 일단 숫자 범위가 넘어가는지 생각해보는 것도 필요합니다. 그리고 0이란 숫자가 있기 때문에 좀 골치 아픕니다. 13개의 단자리 곱셈이기 때문에 최대 숫자는 9의 13제곱인 2,541,865,828,329이 됩니다. 약 20억정도의 숫자를 표시하는 int 형으로는 오버플로우가 발생할 수 있습니다. 그래서 int64 자료형을 이용해서 프로그램을 작성해야 합니다. 4개의 숫자를 가지고 한다고 하면, 7316717653 의 숫자의 경우, 7x3x1x6 3x1x6x7 1x6x7x1 ... 과 같이 하나씩 이동하면서 4개씩 곱해주어도 됩니다. 그렇지만, 7 3 1 6 .. 2014. 12. 23.
6. 프로젝트 오일러 #6 : 합의 제곱과 제곱의 합 차 구하기. 사실 이번 문제는 앞에서 합을 구하는 문제와 동일합니다. 뭐 for 루프를 이용해서 답을 구해도 되겠지만, 그냥 알고 있는 공식을 이용해도 됩니다. 단 공식을 이용할 때 주의할 점은 결과의 범위가 넘어갈 것인가 아닌가입니다만, 그것을 무시한다면, 공식을 이용해서 계산하는 것이 더 빠르겠죠. int main() { int n = 100; int s1, s2; s1 = n*(n+1)*(2*n+1)/6; s2 = n*(n+1)/2; printf("Ans = %d\n", s2*s2 - s1); } 2014. 12. 22.
프로젝트 오일러 #0 시작하며 프로젝트 오일러가 요즘 프로그래머(아 제가 좀 늦었을지는 모르겠지만)들에게 인기가 있어서, 프로젝트 오일러를 조금 다른 시각으로 풀어볼려고 합니다. 벌써 문제가 몇백개가 되어놓아서, 이 연재는 과연 얼마나 오래 걸릴지는 잘 모르겠습니다. 일단, 제가 가장 중요하게 생각하는 것은 효율성입니다. for 루프 등을 이용하면 쉽게 만들 수 있는 프로그램이지만, 여기서는 가장 효율적인 프로그램을 이용해서 만들어볼려고 합니다. 물론 한계가 있어서 가장 효율적인 프로그램이 안 될 수도 있겠지만요. 오일러 프로젝트를 검색했더니, 답을 넣으면 풀 수 있는 사이트가 있네요.(영문 사이트 : https://projecteuler.net/, 한글 번역 사이트 : http://euler.synap.co.kr/)제가 다른 프로그.. 2014. 12. 18.
728x90