codeforces 556B. Case of Fake Numbers 解题报告
题目链接: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 解题报告的更多相关文章
- CodeForces - 556B Case of Fake Numbers
//////////////////////////////////////////////////////////////////////////////////////////////////// ...
- 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 ...
- 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 ...
- 【九度OJ】题目1442:A sequence of numbers 解题报告
[九度OJ]题目1442:A sequence of numbers 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1442 ...
- 【LeetCode】129. Sum Root to Leaf Numbers 解题报告(Python)
[LeetCode]129. Sum Root to Leaf Numbers 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/pr ...
- 【LeetCode】386. Lexicographical Numbers 解题报告(Python)
[LeetCode]386. Lexicographical Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...
- 【LeetCode】165. Compare Version Numbers 解题报告(Python)
[LeetCode]165. Compare Version Numbers 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...
随机推荐
- git SSH keys
An SSH key allows you to establish a secure connection between your computer and GitLab. Before gene ...
- IOS表情存入MYSQL数据库失败
从 MySQL 5.5.3 开始,MySQL 支持一种 utf8mb4 的字符集,这个字符集能够支持 4 字节的 UTF8 编码的字符. utf8mb4 字符集能够完美地向下兼容 utf8 字符串.在 ...
- webapp开发要点记录
1. iphone 各机型 机型 分辨率 像素比 物理分辨率 高* 宽 * 后 主屏对角线长度 重量 像素密度(ppi) iphone4/iphone4s 320 * 480 2 640 * 960 ...
- Pro Mac 如何将英文文件夹汉化为中文
1.新建一个英文名的文件夹. 2.打开文本编辑,文本编辑 -> 预置 -> 新建文稿 -> 格式,选上纯文本,关闭预置. 3.新建了一个txt文件,在里面输入要汉化的英文名(刚才新建 ...
- 分享一个c#t的网页抓取类
using System; using System.Collections.Generic; using System.Web; using System.Text; using System.Ne ...
- php数据结构与算法
php面试题之二--数据结构和算法(高级部分) 二.数据结构和算法 1.使对象可以像数组一样进行foreach循环,要求属性必须是私有.(Iterator模式的PHP5实现,写一类实现Iterator ...
- C++Socket编程总结 [转]
使用socket写代码主要是要看自己的需求是什么. 如果通信时,内容很重要就要使TCP方式. 如果用户数太多,可能就要使用UDP方式了. 在TCP模式下,最简单的方式就是这样的,使阻塞方式: 服务端: ...
- 从输入 URL 到浏览器接收的过程中发生了什么事情?
从输入 URL 到浏览器接收的过程中发生了什么事情? What really happens when you navigate to a URL 上面两篇文章都解读的很好,值得阅读. 接下来在总结一 ...
- Word撤销键(Ctrl+z)无效的解决方法
最近翻译一本新书,Word2013用的较多,于是发现了一个奇怪的问题,撤销按钮一直是灰色.编辑的时候闪一下,又变为灰色.按Ctrl-Z也同样不管用.中文资源里面的解决方法都是用winword.exe ...
- Button圆角处理
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="ht ...