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; } #includeint 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; } #includeint main() { int n; scanf("%d",&n); printf("%d",f(n)); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)