#include
using namespace std;
int f(int x)
{ if(x==1)
return 1;
else if(x==2)
return 1;
else
return f(x-1)+f(x-2);
}
int main()
{
int n;
cin>>n;
if(n<10007)
cout<<n;
else
{
cout<<f(n)%10007;
}
return 0;
}
用数组来从i=3开始往后向F[n]算,中间也用数组来存/10007的余数,然后将余数存进数组继续运算。
这里有个我的想法误区,以为只能从f[n]往前算,实际不是的。
#include
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
a[0]=0;
a[1]=a[2]=1;
if (n>2)
{
for(int i=3;i<=n;i++)
{
a[i]=(a[i-1]+a[i-2])%10007;
}
}
cout<<a[n];
return 0;
}
我菜得伤心,睡不着觉继续整整吧