题目1387:斐波那契数列
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:5996
解决:1794
-
题目描述:
-
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:
-
输入:
-
输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=70)。
-
输出:
-
对应每个测试案例,
输出第n项斐波那契数列的值。
-
样例输入:
-
3
-
样例输出:
-
2
-
#include <stdio.h> //超时的代码 //int fab(int n) //{ // //int num; // if(n==0||n==1) // return n; // else // return fab(n-1)+fab(n-2); // //} long long fab(int n) { long long x=0,y=1,z; int i; if(n==0||n==1) z=n; else { for(i=2;i<=n;++i) { z=y+x; x=y; y=z; } } return z; } int main() { int n; while(scanf("%d",&n)!=EOF) { printf("%lld\n",fab(n)); } return 0; } /************************************************************** Problem: 1387 User: road Language: C Result: Accepted Time:0 ms Memory:912 kb ****************************************************************/
-
1. 使用递归会超时
-
2. int/long/long long
-
32位编译器:int :4个字节 long: 4个字节 long long :8个字节
unsigned int 0~4294967295
int - 2147483648~2147483647
unsigned long 0~4294967295
long - 2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:18446744073709551615
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615