CodeForces 556 --Case of Fake Numbers
2 seconds
256 megabytes
standard input
standard output
Andrewid the Android is a galaxy-famous detective. He is now investigating a case of frauds who make fake copies of the famous Stolp's gears, puzzles that are as famous as the Rubik's cube once was.
Its most important components are a button and a line of n similar gears. Each gear has n teeth
containing all numbers from 0 to n - 1 in
the counter-clockwise order. When you push a button, the first gear rotates clockwise, then the second gear rotates counter-clockwise,
the the third gear rotates clockwise an so on.
Besides, each gear has exactly one active tooth. When a gear turns, a new active tooth is the one following after the current active tooth according to the direction of the rotation. For example, if n = 5,
and the active tooth is the one containing number 0, then clockwise rotation makes the tooth with number 1 active,
or the counter-clockwise rotating makes the tooth number 4 active.
Andrewid remembers that the real puzzle has the following property: you can push the button multiple times in such a way that in the end the numbers on the active teeth of the gears from first to last form sequence 0, 1, 2, ..., n - 1.
Write a program that determines whether the given puzzle is real or fake.
The first line contains integer n (1 ≤ n ≤ 1000)
— the number of gears.
The second line contains n digits a1, a2, ..., an (0 ≤ ai ≤ n - 1)
— the sequence of active teeth: the active tooth of the i-th gear contains number ai.
In a single line print "Yes" (without the quotes), if the given Stolp's gears puzzle is real, and "No" (without
the quotes) otherwise.
3
1 0 0
Yes
5
4 2 1 4 3
Yes
4
0 2 3 1
No
In the first sample test when you push the button for the first time, the sequence of active teeth will be 2 2 1, when you push it for the second
time, you get 0 1 2.
这么长的题面粘过来真是不太好。此题题意真是迷+迷,开始没看懂题,愣是不造这题要干嘛,直到有人抢了一血才尝试去动他。
题意:有n个齿轮,每个齿轮有n个齿。编号逆时针从0到n-1。第一个齿轮顺时针转带动第二个齿轮,于是第二个齿轮逆时针转又带动第三个齿轮,and so on..现在给定你一组序列作为初始序列判断经过若干次转动后是否能回到0 1 2 ...n-1。可以转任意次。
思路:首先看懂题,知道样例怎么来的这题基本就没什么问题了。我们可以逆着来推,假设初始序列为0 1 2...n-1,判断经过若干次转动后是否能到达给定状态,其实这n个齿轮转动一周后还是会回到初始状态,我们只需判断中间是否有某个状态符合条件。数据只有1000,所以两层循环即可。
const int N=1e5+10;
int a[1001],b[N];
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++) scanf("%d",&a[i]);
int f=0;
for(int i=0;i<n;i++) b[i]=i;//初始状态。
for(int i=0;i<=n&&!f;i++)
{
for(int i=0;i<n;i++)//编号为偶数的顺时针转
if(i%2==0) b[i]=(b[i]+1)%n;
else b[i]=(b[i]-1+n)%n;
int x=0;
for(int i=0;i<n&&!x;i++)
if(a[i]!=b[i]) x=1;
if(!x) f=1;
}
if(f) printf("Yes\n");
else printf("No\n");
}
return 0;
}
大水题,,要敢于尝试和快速理解题意啊。。。
CodeForces 556 --Case of Fake Numbers的更多相关文章
- CodeForces - 556B Case of Fake Numbers
//////////////////////////////////////////////////////////////////////////////////////////////////// ...
- codeforces 556B. Case of Fake Numbers 解题报告
题目链接:http://codeforces.com/problemset/problem/556/B 题目意思:给出 n 个齿轮,每个齿轮有 n 个 teeth,逆时针排列,编号为0 ~ n-1.每 ...
- Codeforces Round #310 (Div. 2) B. Case of Fake Numbers 水题
B. Case of Fake Numbers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- 构造 Codeforces Round #310 (Div. 2) B. Case of Fake Numbers
题目传送门 /* 题意:n个数字转盘,刚开始每个转盘指向一个数字(0~n-1,逆时针排序),然后每一次转动,奇数的+1,偶数的-1,问多少次使第i个数字转盘指向i-1 构造:先求出使第1个指向0要多少 ...
- B. Case of Fake Numbers( Codeforces Round #310 (Div. 2) 简单题)
B. Case of Fake Numbers time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- 【66.47%】【codeforces 556B】Case of Fake Numbers
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- Codeforces 385C Bear and Prime Numbers
题目链接:Codeforces 385C Bear and Prime Numbers 这题告诉我仅仅有询问没有更新通常是不用线段树的.或者说还有比线段树更简单的方法. 用一个sum数组记录前n项和, ...
- Codeforces 385C Bear and Prime Numbers(素数预处理)
Codeforces 385C Bear and Prime Numbers 其实不是多值得记录的一道题,通过快速打素数表,再做前缀和的预处理,使查询的复杂度变为O(1). 但是,我在统计数组中元素出 ...
- [Codeforces 555E]Case of Computer Network(Tarjan求边-双连通分量+树上差分)
[Codeforces 555E]Case of Computer Network(Tarjan求边-双连通分量+树上差分) 题面 给出一个无向图,以及q条有向路径.问是否存在一种给边定向的方案,使得 ...
随机推荐
- jQuery将json字符串显示在页面上
js代码: function syntaxHighlight(json) { if (typeof json != 'string') { json = JSON.stringify(json, un ...
- 访问TomCat出现的一些异常
BUG-01:访问页面时出现: HTTP Status 500 servlet.init() for servlet DispatcherServlet threw exception...... 解 ...
- Bean with name 'xxxService' has been injected into other beans [xxxServiceA,xxxServiceB] in its raw version as part of a circular reference, but has eventually been wrapped
启动项目,通过@Autowired注入对象,出现循环依赖,导致项目启动失败,具体报错信息如下: Exception encountered during context initialization ...
- QWidget标题栏双击事件
widget.h virtual bool event(QEvent *event); widget.cpp bool Widget::event(QEvent *event) { if (event ...
- java将一个List赋值给另一个List的4种方法
编辑 删除 声明:ArrayList a, 仅仅只是声明了一个list变量,其未来作用相当于C++中的引用变量,亦或者相当于一个对象块的索引,但并未为其分配具体的完整的对象所需要的内存空间,其所分配的 ...
- pylint安装失败的解决方法
原文链接http://www.cnblogs.com/Loonger/p/7815335.html 使用命令pip3 install pylint安装pylint是出现错误.查了一圈也找不到答案.仔细 ...
- js 逻辑运算符、等号运算符
1 逻辑运算符 逻辑运算只有2个结果,一个为true,一个为false. 1.且&& ★ 两个表达式为true的时候,结果为true. ------------------------ ...
- Python 使用re模块实现正则表达式
# coding: utf-8 # Team : Quality Management Center # Author:Carson # Date :2019/6/21 10:41 # Tool :P ...
- VBA Promming入门教程——变量的使用
数据类型 VBA中的数据类型可分为两种 示例 String Sub Main Dim s as string s = "Hello" msgbox(s) End Sub Singl ...
- _ 下划线 vue mixins 混入 变量前有下划线 变量不起作用
_ 下划线 vue mixins 混入 变量前有下划线 变量不起作用