本题代码实现比较简单,而且是填空题
typedef long long ll;
ll f(int n)
{
int i,a=1,b=1,c=1,result;
for(i=4;i<=n;i++)
{
result=a+b+c;
a=b;
b=c;
c=result;
}
if(n<=3)
return 1;
else
return result;
}
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}
这是我直接看到这道题没多想就直接写的代码~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OJ直接给了个答案错误~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
实际上本题的陷阱就在超范围~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
避免这种陷阱的方法即每次求解的时候都取模即可!!!!!!!!!!!!!!!!!!!!!
所以
typedef long long ll;
ll f(int n)
{
int i,a=1,b=1,c=1,result;
for(i=4;i<=n;i++)
{
result=a+b+c;
a=b;
b=c;
c=result%10000; //取模!!!!!!!!!!!
}
if(n<=3)
return 1;
else
return result;
}
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
return 0;
}