P8248 简单数列 题解

· · 题解

P8248 简单数列 题解

这道题,很多人都觉得 500 个数,这得试到猴年马月才能过啊,还是直接枚举/搜索吧。

诶,但我就打表过了,而且没有靠程序枚举输出。

题意补充

这个题意即使这么简便,还是有人看不懂。所以我补充一下。

思路

打表。首先构造一组比较可以的数列,至少能拿 20 分。这个时候把整个数列复制几遍,先把这个初始的数列称为一段。每段之间加上几个数字,使得数字总数超过 500,并且如果把一段看做 5 的话,这个数列要满足没有任何相邻的的子串相同。

接着,自己写SPJ或者直接交上来查看哪里有误,接着进行微调。微调也要有技巧,我调了半个多小时才 AC

代码

这里提供 C++Python 代码。

C++

#include<bits/stdc++.h>
using namespace std;
int s[500]={1,2,3,4,1,3,1,2,3,4,3,1,2,3,1,3,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,2,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,1,2,3,4,1,3,1,4,3,4,2,3,4,1,3,1,2,3,4,3,1,2,3,1,4,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,2,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,1,2,3,4,1,3,1,4,1,2,3,4,1,3,1,2,3,4,3,1,2,3,1,3,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,2,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,1,4,1,2,3,4,1,3,1,2,3,4,3,1,2,3,1,3,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,2,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,4,3,4,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,1,2,3,4,3,1,2,3,1,3,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,3,2,1,2,3,4,1,3,1,2,3,4,2,3}//呜呜呜累死了
int main(){
    ios::sync_with_stdio(false);
    int a;cin>>a;//输入
    for(int i=0;i<a;i++){
        cout<<s[i]<<" ";//这个数组满足所有的,因为输入500是可以的,所以更小的数字也行
    }
    return 0;
}

Python

#这段代码如果自动识别语言会识别成Pascal
a=int(input())
s=[1,2,3,4,1,3,1,2,3,4,3,1,2,3,1,3,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,2,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,1,2,3,4,1,3,1,4,3,4,2,3,4,1,3,1,2,3,4,3,1,2,3,1,4,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,2,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,1,2,3,4,1,3,1,4,1,2,3,4,1,3,1,2,3,4,3,1,2,3,1,3,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,2,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,1,4,1,2,3,4,1,3,1,2,3,4,3,1,2,3,1,3,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,3,2,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,4,3,4,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,1,2,3,4,3,1,2,3,1,3,2,3,4,3,1,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,2,1,2,3,4,1,3,4,2,3,4,1,3,1,2,3,4,2,4,1,2,3,4,1,3,1,2,3,4,3,2,1,2,3,4,1,3,1,2,3,4,2,3#这里真的很难调
for i in range(a):
    print(s[i],end=" ")

求过0ω0