티스토리 뷰
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==2) cout<<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 |