坑爹的循环题

来源:互联网 发布:韩服lol账号购买淘宝 编辑:程序博客网 时间:2024/04/30 06:54

这道题目看过之后就知道一定是循环题,前四十分钟一直在找循环节,尼玛,就是找不到,每次都是输出几百或一两千个数字,然后趴在屏幕上找循环,怎么找就是找不到。后来突然想到了优化的方法,因为f[1]=1,f[2]=7,f[3]=20,,我只需要判定如果当前f[i]=20且f[i-1]=7,且f[i-2]=1,跳出循环,终于被我找到了,尼玛 ,4018,坑啊!!!

G - 大家好,我是题目G
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit Status Practice HDU 2802
Appoint description: 

Description


Giving the N, can you tell me the answer of F(N)?
 

Input

Each test case contains a single integer N(1<=N<=10^9). The input is terminated by a set starting with N = 0. This set should not be processed.
 

Output

For each test case, output on a line the value of the F(N)%2009.
 

Sample Input

1230
 

Sample Output

1720
 

附上代码:
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>__int64 f[10010];int main(){__int64 n,i;f[0]=0;f[1]=1;f[2]=7;for(i=3;i<=4018;i++){f[i]=f[i-2]+i*i*i-(i-1)*(i-1)*(i-1);f[i]=f[i]%2009;}while(scanf("%I64d",&n),n){        printf("%I64d\n",f[n%4018]);}return 0;}

0 0