[ 문제 ]
10826번: 피보나치 수 4 (acmicpc.net)
[ 접근방법 ]
이 문제의 답은 long long의 범위를 한참 넘어선다.
문자열을 통해 큰 수 계산을 간접적으로 진행했다.
[ 소스코드 ]
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string Add(string p, string q){
string res;
int sum = 0;
reverse(p.begin(), p.end());
reverse(q.begin(), q.end());
while(p.length() < q.length())p += '0';
while(p.length() > q.length())q += '0';
for(int i = 0; i < p.length(); i++){
sum += p[i] - '0' + q[i] - '0';
res += to_string(sum % 10);
sum /= 10;
}
if(sum)res += to_string(sum);
reverse(res.begin(), res.end());
return res;
}
int n;
string x, y, z;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
y = "0";
if(n)y = "1";
for (int i = 2; i <= n; i++)
{
z = Add(x, y);
x = y;
y = z;
}
cout << y;
return 0;
}
'PS' 카테고리의 다른 글
[ 백준 / C++ ] 17143 : 낚시왕 (0) | 2024.07.17 |
---|---|
[ 백준 / C++ ] 17471 : 게리맨더링 (0) | 2024.07.16 |
[ 백준 / C++ ] 1167 : 트리의 지름 (0) | 2024.07.11 |
[ 백준 / C++ ] 9084 : 동전 (0) | 2024.07.10 |
[ 백준 / C++ ] 2644 : 촌수계산 (0) | 2024.07.09 |