和Fibonacci数列有关的一道入门级编程题
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式:输入包含一个整数n。 输出格式:输出一行,包含一个整数,表示Fn除以10007的余数。 数据规模与约定:1 <= n <= 1,000,000。
错误代码:
#include <stdio.h>
int main(){
int n;
int *f=new int[n];
scanf("%d",&n);
f[1]=1;
f[2]=1;
if(n<1){
return -1;
}
if(n<3){
printf("%d\n", f[n] );
}
if(n>1000000){
return -1;
}
else{
for(int i=2;i<n+1;i++){
f[i]=(f[i-1]+f[i-2])%10007;
}
printf("%d\n", f[n] );
}
return 0;
}
编译可以通过,但运行时出错。求各位指点。(鉴于我编程能力实在太弱,希望有人能对我接下来的C语言学习方法提供一些建议,我将感激不尽)