CodeForces - 669D Little Artem and Dance 想法题 多余操作

时间:2023-03-09 06:39:17
CodeForces - 669D  Little Artem and Dance   想法题 多余操作

http://codeforces.com/problemset/problem/669/D

题意:n个数1~N围成一个圈。q个操作包括操作1:输入x, 所有数右移x。操作2:1,2位置上的数(swap(a[1], a[2])交换;3,4交换。。。。

题解:观察,发现所有奇数行为都是一样的,偶数同理,(对于操作1 两者相同,对于操作2 奇数位++,偶数位上--;

模拟1,2,即可,然后依次输出其它数字即可。(看清

ac代码:

#define    _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
const int maxn = 1e6 + ;
const int mod= 1e9 + ;
int a[maxn], x[maxn];
int main(){
int n, q;
cin >> n >> q;
int A=, B=;
for (int i = ; i <= q; i++) {
int x;
scanf("%d", &x); if(x==){
scanf("%d", &x);
A += x;
B += x;
}
else {
if (A & )A++, B--;
else A--, B++;
}
A %= n;
B %= n;
}
while (A <= )A += n;
while (B <= )B += n;
for (int i = ; i < n; i+=) {
a[A] = i; a[B] = i + ;
A+=; B+=;
if (A > n)A -= n;
if (B > n)B -= n;
}
for (int i = ; i <= n; i++)cout << a[i] << ' ';
}