今日的知识点

1.为什么使用long long int?

斐波那契数列的特点是数值增长非常快,具体表现为:
  • 第 10 项:55(int 类型足够)
  • 第 20 项:6765(int 类型足够)
  • 第 30 项:832040(接近 int 的最大值 2147483647)
  • 第 40 项:102334155(超过许多系统中 int 的范围)
  • 第 49 项:12586269025(远超过 int 的表示范围)
int类型的取值范围通常是 - 2147483648 到 2147483647,当斐波那契数超过这个范围时,就会发生整数溢出,导致结果错误。
而long long int类型能表示的范围大得多(通常是 - 9223372036854775808 到 9223372036854775807),足以容纳第 49 项甚至更大的斐波那契数,避免了溢出问题。

2.为什么使用%lld?

%lld是 C 语言中用于格式化输出long long int类型变量的格式控制符,它必须与long long int类型配套使用:
  • 如果用%d输出long long int类型,会导致输出结果错误(格式不匹配)
  • 反之,如果用%lld输出int类型,也会得到错误结果
#include<stdio.h>
int main()
{
    int n;
    int i;
    scanf("%d",&n);
    long long int arr[55];
    arr[0]=0;
    arr[1]=1;
    for (i=2;i<n;i++) {
        arr[i]=arr[i-2]+arr[i-1];
    }
    printf("%lld\n",arr[n-1]);
    return 0;
}