Số Fibonacci được xác định bởi công thức sau:
f[1] = 1.
f[2] = 1.
f[n] = f[n-1] + f[n-2].
Bài toán đặt ra tìm số Fibonacci thứ n (1<=n<=1000)
Input
Một dòng duy nhất chứa số nguyên dương n (1<=n<=1000).
Output
Một số nguyên dương duy nhất có số chữ số không vượt quá 1000 chữ số
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
Ý tưởng:
Gọi mảng `F[n]` có `n` phần tử, với `F[1]=1, F[2]=1, F[i]=F[i-1] + F[i-2]`
Ta sẽ tính `F[n]` bằng cách cộng 2 xâu do vượt quá giới hạn của long long `(10^18`)
Code:
#include <bits/stdc++.h>
using namespace std;
string add(string a, string b) {
int c = a.size();
int d = b.size();
while (c < d) {
a = '0' + a;
c++;
}
while (d < c) {
b = '0' + b;
d++;
}
string f;
c--;
int nho = 0;
while (c >= 0) {
int tong = a[c] - '0' + b[c] - '0' + nho;
nho = tong / 10;
tong = tong % 10;
f = char(tong + '0') + f;
c--;
}
if (nho > 0)
f = '1' + f;
return f;
}
int main()
{
int n;
cin >>n ;
string F[n+1];
F[1]="1";
F[2]="1";
for (int i=3; i<=n; i++)
{
F[i]=add(F[i-1],F[i-2]);
}
cout << F[n];
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin
6097
96309
5489
Quào, sao người ta không add đống này vào lib luôn nhỉ :v
2707
41668
2037
Thế sao m k nó họ làm giống py luôn đi =))
6097
96309
5489
uk thiệt, nhưng mà python khó dùng quá
1428
25060
482
Hả??? Ngược đời z 3 :)) py là nnlt gần với ngôn ngữ tự nhiên cú pháp ngắn ngọn dễ hiểu thế mà :vvvvv
6097
96309
5489
Tại t đã học gì đâu nên thấy khó hiểu đó ba
1428
25060
482
Học đi rồi sẽ thấy cpp khó dùng ntn :))
6097
96309
5489
Kệ đi quen xài c++ sẵn ròi
1428
25060
482
:))