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,代表 T (1≤T≤100000) 组数据。 接下 T行,每行一个数字n(1≤n≤1012)。
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--; } } }