1071:菲波那契数
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 125645 通过数: 66138
【题目描述】
菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。
【输入】
输入一行,包含一个正整数k。(1 ≤ k ≤ 46)
【输出】
输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小。
【输入样例】
19
【输出样例】
4181
【思路分析】
- 首先,读取输入的正整数k,表示要计算的菲波那契数列的第k个数。
- 初始化两个变量a和b,分别表示菲波那契数列的第1个数和第2个数,初始值都为1。
- 使用循环从第3个数开始计算,循环变量i从3递增到k。
- 在循环中,计算第i个数c,即前两个数a和b之和。
- 更新a和b的值,将a设置为前一个数b的值,将b设置为当前计算得到的c的值。
- 循环结束后,输出第k个数b,即为菲波那契数列中第k个数的大小。添加换行符。
【示例代码】
#include<bits/stdc++.h>
// 包含C++标准库的头文件
using namespace std;
// 使用标准命名空间
int main()
{
int a,b,c,k;
// 定义整数变量a,b,c和k
cin>>k;
// 从标准输入流中读取一个整数,赋值给k
a=1;
b=1;
// 初始化a和b为1
for(int i=3;i<=k;i++)
// 循环从3到k进行迭代
{
c=a+b;
// 计算c为前两个数a和b的和
a=b;
// 更新a为前一个数b的值
b=c;
// 更新b为当前计算得到的c的值
}
cout<<b<<endl;
// 输出菲波那契数列中第k个数的大小,并添加换行符
return 0;
}