You are on page 1of 6

Bài 1: FIBO003 - Số phi Fibonacci kế tiếp

#include <bits/stdc++.h>

using namespace std;

bool isPerfectSquare(int x)

int s = sqrt(x);

return (s * s == x);

bool isFibo(int N)

return isPerfectSquare(5 * N * N + 4)

|| isPerfectSquare(5 * N * N - 4);

int nextFibo(int N)

if (N <= 3)

return 4;

if (isFibo(N + 1))

return N + 2;

else

return N + 1;

}
int main()

int t;

cin>>t;

while(t--){

int N = 4;

cin>>N;

cout << nextFibo(N) << endl;

Bài 2. COBAN025 - Số Catalan thứ n

#include <iostream>

using namespace std;

unsigned long int binomialCoeff(unsigned int n,

unsigned int k)

unsigned long int res = 1;

if (k > n - k)

k = n - k;

for (int i = 0; i < k; ++i) {

res *= (n - i);

res /= (i + 1);

return res;
}

unsigned long int catalan(unsigned int n)

unsigned long int c = binomialCoeff(2 * n, n);

return c / (n + 1);

int main()

int t;

cin>>t;

while(t--){\

int n;

cin>>n;

cout << catalan(n) << endl;

return 0;

Bai 3: COBAN--021 - Mã Nhị Phân 1

#include <bits/stdc++.h>

using namespace std;

void Grey(int n)

for (int i = 0; i < (1 << n); i++)

{
int val = (i ^ (i >> 1));

bitset<32> r(val);

string s = r.to_string();

cout << s.substr(32 - n) << " ";

int main()

int t;

cin>>t;

while(t--){

int n;

cin>>n;

Grey(n);

cout<<endl;

return 0;

Bai 4. FIBO005 - Biểu diễn số N dưới dạng tổng của các số Fibonacci không lặp lại

#include <bits/stdc++.h>

using namespace std;

long long fib[101], dp1[101];

long long dp2[101], v[101];


void fibonacci()

fib[1] = 1;

fib[2] = 2;

for (int i = 3; i <= 87; i++) {

fib[i] = fib[i - 1] + fib[i - 2];

int find(int num)

int cnt = 0;

for (int i = 87; i > 0; i--) {

if (num >= fib[i]) {

v[cnt++] = i;

num -= fib[i];

reverse(v, v + cnt);

dp1[0] = 1;

dp2[0] = (v[0] - 1) / 2;

for (int i = 1; i < cnt; i++) {

dp1[i] = dp1[i - 1] + dp2[i - 1];


dp2[i] = ((v[i] - v[i - 1]) / 2)

* dp2[i - 1]

+ ((v[i] - v[i - 1] - 1) / 2)

* dp1[i - 1];

return (dp1[cnt - 1] + dp2[cnt - 1]);

int main()

int t;

cin>>t;

while(t--){

fibonacci();

int n ;

cin>>n;

cout << find(n) << endl;

return 0;

You might also like