HDU 6130 Kolakoski【】

来源:互联网 发布:执业兽医资格考试软件 编辑:程序博客网 时间:2024/06/06 02:16

Kolakoski

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)
Total Submission(s): 713    Accepted Submission(s): 368


Problem Description
This is Kolakosiki sequence: 1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1. This sequence consists of 1 and 2, and its first term equals 1. Besides, if you see adjacent and equal terms as one group, you will get 1,22,11,2,1,22,1,22,11,2,11,22,1. Count number of terms in every group, you will get the sequence itself. Now, the sequence can be uniquely determined. Please tell HazelFan its nth element.
 

Input
The first line contains a positive integer T(1T5), denoting the number of test cases.
For each test case:
A single line contains a positive integer n(1n107).
 

Output
For each test case:
A single line contains a nonnegative integer, denoting the answer.
 

Sample Input
212
 

Sample Output
12
 

Source
2017 Multi-University Training Contest - Team 7
 

思路:根据题意可发现,第一个数列的第i位上的数字就是第二个数列第i组合的个数,然后就可以写出数列的内容。

以下是Kolakoski数列:$1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1……$,这个数列仅有1122组成,并且第一项是11。同时还满足一个性质,如果把相邻且相同的项看成一组,可以得到$1,22,11,2,1,22,1,22,11,2,11,22,1……$,计算每一组项的数量,则能得到这个序列本身。这个数列是可以被唯一确定的,请求出它的第nn项。1\leq n\leq10^71n107


#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<queue>#include<stack>#include<vector>#include<map>#include<set>#include<algorithm>using namespace std;#define ll long long#define ms(a,b)  memset(a,b,sizeof(a))const int M=1e7+10;const int MM=2e3+10;const int inf=0x3f3f3f3f;const int mod=1e9+7;;const double eps=1e-8;int n,m;int a[M];void init(){   a[1]=1,a[2]=2;   int k=1;   for(int i=1;i<M;i++){      if(k>M)break;      if(i%2==0){         if(a[i]==2)a[k++]=2,a[k++]=2;         else a[k++]=2;      }      else{          if(a[i]==2)a[k++]=1,a[k++]=1;          else a[k++]=1;      }   }}int main(){    int t;    init();    scanf("%d",&t);    while(t--){        scanf("%d",&n);        printf("%d\n",a[n]);    }    return 0;}


原创粉丝点击