HDOJ 2802 F(N)

来源:互联网 发布:c语言32个关键词 编辑:程序博客网 时间:2024/05/29 10:12

Problem 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
1
2
3
0

Sample Output
1
7
20

一般这种让根据公式求出对应项的值得题都有规律 (有一个循环,此题的循环为4018(注意 这种有循环规律的是让你输出对应项对某个数取余后的题))可以先打表写出有限个数的结果,再观察规律,或者直接写代码判断是否进入了循环。

import java.math.BigDecimal;import java.util.Scanner;public class Main {    static int[] f = new int[10000];    public static void main(String[] args) {        f[1]=1;        f[2]=7;        for(int i=3;i<=4018;i++){            f[i] = (f[i-2]-((i-1)*(i-1)*(i-1))+(i*i*i))%2009;            //System.out.println(i+" "+f[i]);        }        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            int n = sc.nextInt();            if(n==0)                return ;//          for(int i=3;i<100000;i+=2){//              if(f[i]==1&&f[i+1]==7){//                  System.out.println(i-1);//                  break;//              }//          }            //判断多久开始循环            System.out.println(f[n%4018]);        }    }}
1 0
原创粉丝点击