题目链接:http://codeforces.com/problemset/problem/556/B

题目意思:给出 n 个齿轮,每个齿轮有 n 个 teeth,逆时针排列,编号为0 ~ n-1。每按一次 button,每个齿轮都会有且仅有一个活动的tooth,对于偶数编号的齿轮,它下一个活动tooth是紧挨着当前tooth的逆时针方向的那个;而奇数编号的齿轮,下一个活动tooth是顺时针的那个。给出每个齿轮的活动tooth,问通过按下有限次的button,问能不能得到一个0,1,...,n-2,n-1的序列。

  离校第一场!果然惨不堪言~~~~

  犯了些低级错误,输入输出问题= =;然后问题复杂化了,复杂化就算了,连算法都错了。输入的时候用了int,然后转为char保存,以便strcmp比较。。。然后计算新的tooth的时候又转回int。。。。这样做的错误就是输入从int变为char,而算出新的tooth的位置时会比较不了。

  例如有这样的序列:

15
2  14  4  1  6  3  8  5  10  7  12  9  14  11  1

ref:0 ~ n-1 的 char

s: 输入的原始序列转化为 char

  然后计算新位置的时候,

  奇数齿轮计算公式:x = (x-1+n) % n;

  偶数齿轮计算公式:x = (x+1+n) % n

  问题就出在x上,留意ref的10, 11,之后的位置,不是对应的阿拉伯数字来的,是字符,而公式是针对数字来计算新的tooth位置的。这就会导致(列举10次)以下的情况:

  

  可想而知就是 呵呵呵 了。。。。= =

最后我就踏踏实实用 int 数组来做了,血与泪的教训!一步一步模拟,不要想太多。

  这里讲一下循环结束条件,只需要试验1000次就可以了,因为对于每一只齿轮,活动tooth是周而复始的,试验1000次就能把一个齿轮的每个tooth都试遍,其实所有齿轮也就是1000种序列情况嘛~~~同步的哟。

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
using namespace std; const int maxn = + ;
int a[maxn]; int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif // ONLINE_JUDGE int n;
while (scanf("%d", &n) != EOF) { for (int i = ; i < n; i++) {
cin >> a[i];
}
bool flag = true;
int cnt = ;
while (cnt < maxn) {
flag = true;
cnt++;
for (int i = ; i < n; i++) {
if (a[i] != i) {
flag = false;
break;
}
}
if (flag) {
break;
} else {
for (int i = ; i < n; i++) {
if (i & ) {
a[i] = (a[i] - + n) % n;
}
else {
a[i] = (a[i] + ) % n;
}
}
}
}
printf("%s\n", flag ? "Yes" : "No");
}
return ;
}

codeforces 556B. Case of Fake Numbers 解题报告的更多相关文章

  1. CodeForces - 556B Case of Fake Numbers

    //////////////////////////////////////////////////////////////////////////////////////////////////// ...

  2. CodeForces 556 --Case of Fake Numbers

    B. Case of Fake Numbers time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  3. 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 ...

  4. 构造 Codeforces Round #310 (Div. 2) B. Case of Fake Numbers

    题目传送门 /* 题意:n个数字转盘,刚开始每个转盘指向一个数字(0~n-1,逆时针排序),然后每一次转动,奇数的+1,偶数的-1,问多少次使第i个数字转盘指向i-1 构造:先求出使第1个指向0要多少 ...

  5. 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 ...

  6. 【九度OJ】题目1442:A sequence of numbers 解题报告

    [九度OJ]题目1442:A sequence of numbers 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1442 ...

  7. 【LeetCode】129. Sum Root to Leaf Numbers 解题报告(Python)

    [LeetCode]129. Sum Root to Leaf Numbers 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/pr ...

  8. 【LeetCode】386. Lexicographical Numbers 解题报告(Python)

    [LeetCode]386. Lexicographical Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...

  9. 【LeetCode】165. Compare Version Numbers 解题报告(Python)

    [LeetCode]165. Compare Version Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...

随机推荐

  1. git SSH keys

    An SSH key allows you to establish a secure connection between your computer and GitLab. Before gene ...

  2. IOS表情存入MYSQL数据库失败

    从 MySQL 5.5.3 开始,MySQL 支持一种 utf8mb4 的字符集,这个字符集能够支持 4 字节的 UTF8 编码的字符. utf8mb4 字符集能够完美地向下兼容 utf8 字符串.在 ...

  3. webapp开发要点记录

    1. iphone 各机型 机型 分辨率 像素比 物理分辨率 高* 宽 * 后 主屏对角线长度 重量 像素密度(ppi) iphone4/iphone4s 320 * 480 2 640 * 960 ...

  4. Pro Mac 如何将英文文件夹汉化为中文

    1.新建一个英文名的文件夹. 2.打开文本编辑,文本编辑 -> 预置 -> 新建文稿 -> 格式,选上纯文本,关闭预置. 3.新建了一个txt文件,在里面输入要汉化的英文名(刚才新建 ...

  5. 分享一个c#t的网页抓取类

    using System; using System.Collections.Generic; using System.Web; using System.Text; using System.Ne ...

  6. php数据结构与算法

    php面试题之二--数据结构和算法(高级部分) 二.数据结构和算法 1.使对象可以像数组一样进行foreach循环,要求属性必须是私有.(Iterator模式的PHP5实现,写一类实现Iterator ...

  7. C++Socket编程总结 [转]

    使用socket写代码主要是要看自己的需求是什么. 如果通信时,内容很重要就要使TCP方式. 如果用户数太多,可能就要使用UDP方式了. 在TCP模式下,最简单的方式就是这样的,使阻塞方式: 服务端: ...

  8. 从输入 URL 到浏览器接收的过程中发生了什么事情?

    从输入 URL 到浏览器接收的过程中发生了什么事情? What really happens when you navigate to a URL 上面两篇文章都解读的很好,值得阅读. 接下来在总结一 ...

  9. Word撤销键(Ctrl+z)无效的解决方法

    最近翻译一本新书,Word2013用的较多,于是发现了一个奇怪的问题,撤销按钮一直是灰色.编辑的时候闪一下,又变为灰色.按Ctrl-Z也同样不管用.中文资源里面的解决方法都是用winword.exe ...

  10. Button圆角处理

    <?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="ht ...