티스토리 뷰

Algorithm/BOJ

4150 피보나치 수

henry1214 2018. 2. 12. 02:12

https://www.acmicpc.net/problem/4150



string의 + 연산을 연산자 오버로딩(Operator Overloading)하여 큰 수 연산을 구현하였다.



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
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
string operator+(string &a,string &b)
{
    string ret;
    int s1=a.size(),s2=b.size(),up=0;
    for(int i=s1-1,j=s2-1;(i>=0||j>=0);i--,j--)
    {
        int d;
        if(i>=0 && j>=0) d=a[i]-'0'+b[j]-'0'+up;
        else if(i>=0 && j<0) d=a[i]-'0'+up;
        else if(i<0 && j>=0) d=b[j]-'0'+up;
        if(d<10) ret+=d+'0',up=0;
        else up=d/10,ret+=d%10+'0';
    }
    if(up) ret+=up+'0';
    reverse(ret.begin(),ret.end());
    return ret;
}
 
int main()
{
    int n;
    scanf("%d",&n);
    string f1="1",f2="1",f3;
    for(int i=3;i<=n;i++) f3=f1+f2,f1=f2,f2=f3;
    if(n==1 || n==2cout<<1;
    else cout<<f3;
    return 0;
}
cs


'Algorithm > BOJ' 카테고리의 다른 글

11437 LCA  (0) 2018.02.12
1915 가장 큰 정사각형  (0) 2018.02.12
3896 소수 사이 수열  (0) 2018.02.12
1654 랜선 자르기  (0) 2018.02.12
5355 화성 수학  (0) 2018.02.11
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday