기본 콘텐츠로 건너뛰기

하나의 int 변수로 표현 불가능한범위의 integer를 표현할때 방법

1.  C++로 아래처럼 구현

//thank you for kks227
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
using namespace std;
const int mod = 1000000000;
vector<int> operator +(vector<int> &A, vector<int> &B) {
bool carry = false;
vector<int> result(A.size(), 0);
for (int i = 0; i<A.size(); i++) {
result[i] = A[i] + (i<B.size() ? B[i] : 0) + carry;
if (result[i] >= 10) {
carry = true;
result[i] -= 10;
}
else carry = false;
}
if (carry) result.push_back(1);
return result;
}
int main() {
int N;
scanf("%d", &N);
if (N<2) {
printf("%d\n", N);
return 0;
}
vector<int> A(1, 0), B(1, 1), C;
for (int i = 2; i <= N; i++) {
C = B + A;
A = B;
B = C;
}
for (int i = B.size() - 1; i >= 0; i--)
printf("%d", B[i]);
}
2.  python으로 구현

댓글

이 블로그의 인기 게시물

Tree traversal의 3가지

1. 전위 순회 (Preorder Traversal) Root -> Left Tree -> Right Tree   ( 루트를 제일 처음에 방문 ) 2. 중위 순회 (Inorder Traversal) Left Tree -> Root -> Right Tree   ( 루트를 중간에 방문 ) 3. 후위 순회 (Postorder Traversal) Left Tree -> Right Tree -> Root   ( 루트를 제일 마지막에 방문 ) <소스코드> 출처 : http://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder /// C program for different tree traversals #include <stdio.h> #include <stdlib.h> /* A binary tree node has data, pointer to left child    and a pointer to right child */ struct node {      int data;      struct node* left;      struct node* right; }; /* Helper function that allocates a new node with the    given data and NULL left and right pointers. */ struct node* newNode(int data) {      struct node* node = (struct node*)                 ...