您的位置:首页 > 大数据 > 人工智能

2017 Multi-University Training Contest - Team 7:1011. Kolakoski(模拟)

2017-08-15 21:36 447 查看
其他题目题解:

2017 Multi-University Training Contest - Team 7:1005. Euler theorem

2017 Multi-University Training Contest - Team 7:1003. Color the chessboard

2017 Multi-University Training Contest - Team 7:1008. Hard challenge

2017 Multi-University Training Contest - Team 7:1002. Build a tree

2017 Multi-University Training Contest - Team 7:1010. Just do it



这题难在题意吧。。

题意:Kolakoski数列仅有1和2组成

前几项如下:1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1

把相邻相同的数拼在一起:1,22,11,2,1,22,1,22,11,2,11,22,1

就可以发现一个神奇的性质:拼接后的序列中每个数的位数构成的新序列刚好是原序列

求这个序列的第n项是什么?

很好办,直接模拟过去,当然也可以输出rand()%2+1,成功率高达20%

#include<stdio.h>
int a[10000055] = {0,1,2};
int main(void)
{
int T, n, i, j, now = 2;
for(i=2;i<=10000000;i++)
{
for(j=now+1;j<=now+a[i]-1;j++)
a[j] = a[j-1];
now += a[i];
if(a[now-1]==1)  a[now] = 2;
else  a[now] = 1;
if(now>10000000)
break;
}
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
printf("%d\n", a
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐