HDU-Kolakoski

来源:互联网 发布:淘宝手机端网页制作 编辑:程序博客网 时间:2024/06/02 02:17

Kolakoski

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

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(1≤T≤5), denoting the number of test cases.
For each test case:
A single line contains a positive integer n(1≤n≤107).

Output

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

Sample Input

212

Sample Output

12

代码:

#include <iostream>#include <cstdio>#include <cmath>#include <cstring>const int maxn = 1e7+10;using namespace std;int a[maxn];int main(){    a[1] = 1,a[2] = 2,a[3] = 2;    int cnt = 3;    for(int i = 3;i<maxn&&cnt<maxn;++i)    {        {            if(a[cnt] == 2)            {                a[cnt+j] = 1;            }            else a[cnt+j] = 2;        }        cnt += a[i];    }    int t;    scanf("%d",&t);    while(t--)    {        int n;        scanf("%d",&n);        printf("%d\n",a[n]);    }    return 0;}
原创粉丝点击