728x90
반응형
[25번 문제]
피보나치 수열은 아래와 같은 점화식으로 정의됩니다.
Fn = Fn-1 + Fn-2 (단, F1 = 1, F2 = 1).
이에 따라 수열을 12번째 항까지 차례대로 계산하면 다음과 같습니다.
F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
수열의 값은 F12에서 처음으로 3자리가 됩니다.
피보나치 수열에서 값이 처음으로 1000자리가 되는 것은 몇번째 항입니까?
[코드]
기존에 vector와 capacity 를 사용하면서 배열범위 초과 오류가 뜨는지 영문을 몰랐는데.....
capacity로 벡터의 크기를 확인하는게 아니라 size로 확인해야했었다..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include "stdafx.h" #include <iostream> #include <algorithm> using namespace std; int ans = 2; vector <int> vector_sum(vector <int> a,vector <int> b) { for (int i = 0; i < a.size(); i++) { if(i<b.size()) a[i] += b[i]; if (a[i] >= 10) { if (i == (a.size() - 1)) a.push_back(a[i] / 10); else a[i + 1] += a[i] / 10; a[i] %= 10; } } return a; } int main() { vector <int> a, b,temp; a.push_back(1); b.push_back(1); while(a.size() < 1000) { ans++; temp = a; a = vector_sum(a, b); b = temp; } cout<< endl<< ans<<endl; system("pause"); return 0; } | cs |
728x90
반응형
'Solution > Project Euler' 카테고리의 다른 글
[26/C++] 1000 이하의 d 중에서 1/d 이 가장 긴 순환마디를 갖는 수는? (0) | 2018.05.29 |
---|---|
[24/C++] 0, 1, 2, 3, 4, 5, 6, 7, 8, 9로 만들 수 있는 1,000,000번째 사전식 순열은? (0) | 2018.05.28 |
[23/C++] 두 초과수의 합으로 나타낼 수 없는 모든 양의 정수의 합은? (0) | 2018.05.28 |
[22/C++] 영문 이름 점수 합계 구하기 (0) | 2018.05.26 |
[21/C++] 10000 이하 모든 친화수(우애수)의 합은? (0) | 2018.05.26 |