CF303A 题解

大水题。

思路

首先肯定有 Special Judge(?) 不然似乎没法做。

先考虑一下简单的情况,首先考虑前两个数,最简单的情况当然是两数相等啦,所以之接从 $0 \sim n$ 输出就行了。

之后来考虑第 $3$ 个数是什么。

先拿第一组样例举例,前两行依次应为:

0 1 2 3 4
0 1 2 3 4

先看第一组:

0
0

这个明显是 $0$。

第二组为:

1
1

$1+1$ 还没达到 $5$ 因此答案为 $1+1=2$。

第三组为:

2
2

$2+2$ 也没达到 $5$ 因此答案为 $2+2=4$。

之后是第四组:

3
3

和超过了 $5$ 先不管取余的事, $3+3=6$。

前几组答案为 $0,2,4,6$。

是不是看出规律了?

很明显,就是 $0 \times 2,1 \times 2,2 \times 2,3\times 2$,然后再对 $n$ 求余就可以。

再来看看无解的情况,来看看第二组样例。

还是一样的,前几组答案为:

0 1
0 1

直接看第二组,$1+1=2,2 \bmod 2=0$。

可见如果 $n$ 为偶数则无解。

那这道题就快乐的写完啦!

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    if(n%2==0){
        cout<<-1;
        return 0;
    }
    for(int i=0;i<n;i++) cout<<i<<" ";
    cout<<endl;
    for(int i=0;i<n;i++) cout<<i<<" ";
    cout<<endl;
    for(int i=0;i<n;i++) cout<<i*2%n<<" ";
    return 0;
}
posted @ 2023-11-22 19:29  very_easy  阅读(13)  评论(0)    收藏  举报  来源