2017 Multi-University Training Contest - Team 7:hdu6130、Kolakoski
2017-08-15 19:04
483 查看
题目:
[align=left]Problem Description[/align]
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 itsnth
element.
[align=left]Input[/align]
The first line contains a positive integerT(1≤T≤5),
denoting the number of test cases.
For each test case:
A single line contains a positive integer n(1≤n≤107).
[align=left]Output[/align]
For each test case:
A single line contains a nonnegative integer, denoting the answer.
[align=left]Sample Input[/align]
2
1
2
[align=left]Sample Output[/align]
1
2
题意:根据给定序列求第n个元素的值
思路:不明觉厉的东西。百度了下这东西的定义:Kolakoski序列是一个仅由1和2组成的无限数列,是一种通过“自描述”来定义的数列。他的前几项为
1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,…(OEIS上的A000002)
它的定义很简单,若把数列中相同的数定为一组,令a(1)=1,a(2)=2,则a(n)等于第n组数的长度。
可以根据这个定义来推算第三项以后的数:例如由于a(2)=2,因此第2组数的长度是2,因此a(3)=2,;
由于a(3)=2,所以第三组数的长度是2,因此a(4)=a(5)=1;由于a(4)=1,a(5)=1,所以第四组数和第五组数的长度都为1,因此a(6)=2,a(7)=1,第二个数列中第几组数中的个数就是第一个数列中的第几个数,以此类推.
所以打个表就好了,喵~
code:
[align=left]Problem Description[/align]
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 itsnth
element.
[align=left]Input[/align]
The first line contains a positive integerT(1≤T≤5),
denoting the number of test cases.
For each test case:
A single line contains a positive integer n(1≤n≤107).
[align=left]Output[/align]
For each test case:
A single line contains a nonnegative integer, denoting the answer.
[align=left]Sample Input[/align]
2
1
2
[align=left]Sample Output[/align]
1
2
题意:根据给定序列求第n个元素的值
思路:不明觉厉的东西。百度了下这东西的定义:Kolakoski序列是一个仅由1和2组成的无限数列,是一种通过“自描述”来定义的数列。他的前几项为
1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,…(OEIS上的A000002)
它的定义很简单,若把数列中相同的数定为一组,令a(1)=1,a(2)=2,则a(n)等于第n组数的长度。
可以根据这个定义来推算第三项以后的数:例如由于a(2)=2,因此第2组数的长度是2,因此a(3)=2,;
由于a(3)=2,所以第三组数的长度是2,因此a(4)=a(5)=1;由于a(4)=1,a(5)=1,所以第四组数和第五组数的长度都为1,因此a(6)=2,a(7)=1,第二个数列中第几组数中的个数就是第一个数列中的第几个数,以此类推.
所以打个表就好了,喵~
code:
#include<bits/stdc++.h> using namespace std; int a[10000002]; int main() { int t,n,i,j=4,k,x=1; a[1]=1;a[2]=a[3]=2; for(i=3;;i++){ k=a[i]; while(k--&&j<10000002) a[j++]=2-x%2; if(j>10000001) break; x=x%2?2:1; } scanf("%d",&t); while(t--){ scanf("%d",&n); printf("%d\n",a ); } return 0; }
相关文章推荐
- 2017 Multi-University Training Contest - Team 7 1011 Kolakoski
- 【2017 Multi-University Training Contest - Team 7】Kolakoski
- 2017 Multi-University Training Contest - Team 7:1011. Kolakoski(模拟)
- 2017 Multi-University Training Contest - Team 7 Kolakoski
- 【2017 Multi-University Training Contest - Team 1】小结
- 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- [树] hdu6035 Colorful Tree (2017 Multi-University Training Contest - Team 1 C)
- hdu 6047 Maximum Sequence(2017 Multi-University Training Contest - Team 2)
- hdu 6045 Is Derek lying?(2017 Multi-University Training Contest - Team 2)
- 2017 Multi-University Training Contest - Team 2 1001 Is Derek lying?
- hdu 6055 Regular polygon(判断正方形)(2017 Multi-University Training Contest - Team 2)
- 2017 Multi-University Training Contest - Team 2 1006
- 【2017 Multi-University Training Contest - Team 2】Maximum Sequence
- 2017 Multi-University Training Contest - Team 3
- 2017 Multi-University Training Contest - Team 3
- hdu 6058 Kanade's sum(链表)(2017 Multi-University Training Contest - Team 3 )
- hdoj 6033(2017 Multi-University Training Contest - Team 1) Add More Zero
- 2017 Multi-University Training Contest - Team 3
- HDU 6069 Counting Divisors(素数筛法+枚举+技巧)——2017 Multi-University Training Contest - Team 4