题目名称:Seq
题目链接:Seq
Problem Description
度度熊有一个递推式
a
n
a_n
an=(
∑
i
=
1
n
−
1
\sum_{i=1}^{n-1}
∑i=1n−1=
a
i
a_i
ai∗i)%n
其中
a
1
=
1
a_1=1
a1=1 。现给出 n,需要求
a
n
a_n
an 。
Input
第一行输入一个整数 T,代表 T (1≤T≤100000) 组数据。
接下 T 行,每行一个数字 n (1≤n≤
1
0
12
10^{12}
1012)。
Output
输出 T 行,每行一个整数表示答案
Sample Input
5
1
2
3
4
5
Sample Output
1
1
0
3
0
解题思路
这种题就是找规律的问题,先打印出来几千行数据,发现如下规律
例如
1 5 9 13
1 4 7 10
0 1 2 3
3 6 9 12
0 1 2 3
3 6 9 12
规律如上,即可编写代码
完整代码
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
#define N 100010
typedef long long ll;
int t;
ll n;
ll a[N];
int main()
{
a[1]=1;
a[2]=1;
a[3]=0;
a[4]=3;
a[5]=0;
a[6]=3;
cin>>t;
while(t--){
cin>>n;
switch(n%6){
case 1:cout<<n/6*4+1<<endl;break;
case 2:cout<<n/6*3+1<<endl;break;
case 3:cout<<n/6<<endl;break;
case 4:cout<<n/6*6+3<<endl;break;
case 5:cout<<n/6<<endl;break;
case 0:cout<<n/6*3<<endl;break;
}
}
return 0;
}