2017 Multi-University Training Contest

来源:互联网 发布:在线网络代理翻墙 编辑:程序博客网 时间:2024/06/17 10:00

其他题目题解:

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[n]);}return 0;}