Codeforces Gym 100015A Another Rock-Paper-Scissors Problem 找规律
Another Rock-Paper-Scissors Problem
题目连接:
http://codeforces.com/gym/100015/attachments
Description
Sonny uses a very peculiar pattern when it comes to playing rock-paper-scissors. He likes to vary his moves
so that his opponent can’t beat him with his own strategy.
Sonny will play rock (R) on his first game, followed by paper (P) and scissors (S) for his second and
third games, respectively. But what if someone else is using the same strategy? To thwart those opponents,
he’ll then play paper to beat rock, scissors to beat paper, and rock to beat scissors, in that order, for his 4th
through 6th games. After that, he’ll play scissors, rock, and paper for games 7–9 to beat anyone copying
his last set of moves. Now we’re back to the original order—rock, paper, scissors—but instead of being
predictable and using the same moves, do you know what would be better? You guessed it! Sonny then
plays the sequence of moves that would beat anyone trying to copy his whole strategy from his first move,
and on it goes...
To recap, in symbolic form, Sonny’s rock-paper-scissors moves look like this:
RPSPSRSRPPSRSRPRPSSRPRPSPSRPSRSRPRPSSRPRPSPSRRPSPSRSRP ...
The spaces are present only to help show Sonny’s playing pattern and do not alter what move he’ll play on
a certain game.
Naturally, your job is to beat Sonny at his own game! If you know the number of the game that you’ll
be playing against Sonny, can you figure out what move you would need to play in order to beat him?
Input
Each line of the input contains a single integer N,1 ! N ! 1012, the number of the game you’ll be playing
against Sonny. An integer N = 1 indicates it would be Sonny’s first game, N = 7 indicates it would be the
7th game, and so forth. The input terminates with a line with N = 0. For example:
1
7
33
0
Warning: N may be large enough to overflow a 32-bit integer, so be sure to use a larger data type (i.e.
long in Java or long long in C/C++) in your program.
Output
For each test case, output a single line which contains the letter corresponding to the move you would need
to play to beat Sonny on that game. For example, the correct output for the sample input above would be:
P
R
S
Sample Input
1
7
33
0
Sample Output
P
R
S
Hint
题意
剪刀石头布
初始串,RPS
每次操作如下:设现在的串为S
1、将之前的串全部击败,得到S'
2、将S'打败,然后得到S''
然后给你第i位,然后输出打败第i位的策略
题解:
找找规律之后会发现,这个串类似于3进制一样的
比如说23,他是23->14->5->2这样过来的
然后我们只用算他是从哪儿过来的,迭代了几次就好了
代码
#include<bits/stdc++.h>
using namespace std;
const long long limit = 1000000000050LL;
vector<long long> three;
string solve(long long n,long long step)
{
if(n==1)
{
if(step%3==0)
return "P";
else if(step%3==1)
return "S";
else
return "R";
}
if(n==2)
{
if(step%3==0)
return "S";
else if(step%3==1)
return "R";
else
return "P";
}
if(n==3)
{
if(step%3==0)
return "R";
else if(step%3==1)
return "P";
else return "S";
}
}
int main()
{
long long k = 3;
for(int i=0;;i++)
{
three.push_back(k);
k*=3;
if(k>limit)
break;
}
long long n;
while(cin>>n)
{
if(n==0)break;
int step = 0;
while(n>3)
{
n-=*--lower_bound(three.begin(),three.end(),n);
step++;
}
cout<<solve(n,step)<<endl;
}
}
Codeforces Gym 100015A Another Rock-Paper-Scissors Problem 找规律的更多相关文章
- Gym 101194A / UVALive 7897 - Number Theory Problem - [找规律水题][2016 EC-Final Problem A]
题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
- Gym - 101667H - Rock Paper Scissors FFT 求区间相同个数
Gym - 101667H:https://vjudge.net/problem/Gym-101667H 参考:https://blog.csdn.net/weixin_37517391/articl ...
- Codeforces D. Little Elephant and Interval(思维找规律数位dp)
题目描述: Little Elephant and Interval time limit per test 2 seconds memory limit per test 256 megabytes ...
- FFT(Rock Paper Scissors Gym - 101667H)
题目链接:https://vjudge.net/problem/Gym-101667H 题目大意:首先给你两个字符串,R代表石头,P代表布,S代表剪刀,第一个字符串代表第一个人每一次出的类型,第二个字 ...
- SDUT 3568 Rock Paper Scissors 状压统计
就是改成把一个字符串改成三进制状压,然后分成前5位,后5位统计, 然后直接统计 f[i][j][k]代表,后5局状压为k的,前5局比和j状态比输了5局的有多少个人 复杂度是O(T*30000*25*m ...
- Gym101667 H. Rock Paper Scissors
将第二个字符串改成能赢对方时对方的字符并倒序后,字符串匹配就是卷积的过程. 那么就枚举字符做三次卷积即可. #include <bits/stdc++.h> struct Complex ...
- 【题解】CF1426E Rock, Paper, Scissors
题目戳我 \(\text{Solution:}\) 考虑第二问,赢的局数最小,即输和平的局数最多. 考虑网络流,\(1,2,3\)表示\(Alice\)选择的三种可能性,\(4,5,6\)同理. 它们 ...
- 题解 CF1426E - Rock, Paper, Scissors
一眼题. 第一问很简单吧,就是每个 \(\tt Alice\) 能赢的都尽量让他赢. 第二问很简单吧,就是让 \(\tt Alice\) 输的或平局的尽量多,于是跑个网络最大流.\(1 - 3\) 的 ...
随机推荐
- XSS 前端防火墙(4):天衣无缝的防护
例如,我们的属性钩子只考虑了 setAttribute,却忽视还有类似的 setAttributeNode.尽管从来不用这方法,但并不意味人家不能使用. 例如,创建元素通常都是 createEleme ...
- Nginx - Windows下Nginx基本安装和配置
Nginx 是一个轻量级的高性能 Http WebServer,以事件驱动方式编写,因此相比 Apache 而言,Nginx 更加稳定.性能更好,而且配置简单,资源占用较低. 1. 安装 Nginx ...
- Android百度地图开发(一)环境搭建
1.百度地图官方API文档下载 版本 使用说明 下载 Android SDK 通用资源下载 <离线地图>提供新版离线地图(百度矢量地图)与旧版离线地图(百度栅格地图)下载. 备注: 自An ...
- c/c++ 数字转成字符串, 字符串转成数字
c/c++ 数字转成字符串, 字符串转成数字 ------转帖 数字转字符串: 用C++的streanstream: #include <sstream> #Include <str ...
- Leetcode 210 Course Schedule II
here are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prere ...
- The serializable class does not declare a static final serialVersionUID field of type long
在编译以下Java程序时,出现The serializable class does not declare a static final serialVersionUID field of typ ...
- 转 毛笔字教程ps
跟大家分享一下毛笔字怎么做出来的,主要通过字体和素材叠加,十分简单,喜欢的一起练习.做完记得交作业. 先看看最终效果: 在网上是不是经常看这些碉堡了的毛笔感觉是不是很羡慕啊,现在我就教大家怎么做出这样 ...
- Linux下的GitHub安装与简单配置教程
1.GitHub简介 Git是一个分布式版本控制系统,与其相对的是CVS.SVN等集中式的版本控制系统. 2.Git的安装 1)安装Git a.查看与使用 在ubuntu下可以使用如下命令进行查看系统 ...
- Python:列表,元组
一.列表 和字符串一样,列表也是序列类型,因此可以通过下标或者切片操作访问一个或者多个元素.但是,不一样的,列表是容器类型,是可以进行修改.更新的,即当我们进行修改列表元素,加入元素等操作的时候,是对 ...
- Chapter 3 Start Caffe with MNIST Demo
先从一个具体的例子来开始Caffe,以MNIST手写数据为例. 1.下载数据 下载mnist到caffe-master\data\mnist文件夹. THE MNIST DATABASE:Yann L ...