2019百度之星初赛第五题

Seq

Accepts: 1249
Submissions: 3956
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 32768/32768 K (Java/Others)    
 
Problem Description

度度熊有一个递推式其中 a1=1。现给出 n,需要求 an​​。

Input

第一行输入一个整数 T,代表 (1T100000) 组数据。 接下 T行,每行一个数字n(1n1012​​)。

Sample Input
5
1
2
3
4
5
Sample Output
1
1
0
3
0

这道题本来怎么也找不到规律,后来在大哥的提点下,打印出了前30项的an发现了规律:

  当n mod 6=1的时候a1=1,a7=5,a13=9……an=(n/6) *4+1

  当n mod 6=2的时候a2=1,a8=4,a14=7……an=(n/6)*3+1

  当n mod 6=3的时候a3=0,a9=1,a15=2……an=n/6

  当n mod 6=4的时候a4=3,a10=9,a16=15……an=n-1

  当n mod 6=5的时候a5=0,a11=1,a17=2……an=n/6

  当n mod 6=0的时候a6=3,a12=6,a18=9……an=(n/6)*3

我使用java写的,具体的代码参考下面:

import java.util.Scanner;

public class sep {

    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int t=scanner.nextInt();
        while(t>0){
            long  n=scanner.nextLong();
            if(n%6==1){
                System.out.println((n/6)*4+1);
            }
            if(n%6==2){
                System.out.println((n/6)*3+1);
            }
            if(n%6==3){
                System.out.println(n/6);
            }
            if(n%6==4){
                System.out.println((n/6)*3);
            }
            if(n%6==5){
                System.out.println(n/6);
            }
            if(n%6==0){
                System.out.println((n/6)*3);
            }
            t--;
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/xiaolaha/p/11370534.html