CF100015A - Another Rock-Paper-Scissors Problem
来源:互联网 发布:菜鸟网络总部 编辑:程序博客网 时间:2024/06/06 18:02
题目大意:
小明的猜拳策略,先出R,然后每连续两段出拳策略是前一阶段的获胜方法。
样例:
R P S PSR SRP PSRSRPRPS SRPRPSPSR PSRSRPRPSSRPRPSPSRRPSPSRSRP....
第二个P可以赢第一个R,第三个S可以赢第二个P。接着的PSR可以赢前一阶段的RPS,SRP可以赢PSR。然后PSRSRPRPS可以赢R P S PSR SRP,SRPRPSPSR可以赢PSRSRPRPS。以此类推。
求给定轮数胜利的策略。
通过观察可以发现,这个出拳策略和3有关(显然)。我们可以由3的次方数来分组,递归查找,出拳顺序的变换一定是S->P->R(每一次都要赢前一次的对应位置)。所以如果n是某个3的次方数的(1,2】倍之间,就需要往前推一个拳,如果是(2,3】之间,就需要往前推两个,然后去求n mod这个3的次方数的轮数即可。
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<cmath>using namespace std;long long n;long long fang[40];char ans[10];int main(){cin>>n;ans[1]='R';ans[2]='P';ans[3]='S';ans[4]='R';ans[5]='P';ans[6]='S';while(n){fang[0]=1;for(int i=1;i<=35;i++)fang[i]=fang[i-1]*3;int ji=35;int w=0;while(n>3){while(fang[ji]>=n)ji--;if(n<=2*fang[ji]){w++;n-=fang[ji];}else{w+=2;n-=2*fang[ji];}}w%=3;printf("%c\n",ans[n+w+1]);cin>>n;}return 0;}
0 0
- CF100015A - Another Rock-Paper-Scissors Problem
- 4952. Another Rock-Paper-Scissors Problem
- Sicily 4952. Another Rock-Paper-Scissors Problem
- Gym 100015A Another Rock-Paper-Scissors Problem
- Yet Another Story of Rock-paper-scissors
- zoj 3610 Yet Another Story of Rock-paper-scissors
- ZOJ 3610 Yet Another Story of Rock-paper-scissors
- K - Yet Another Story of Rock-paper-scissors
- ZOJ 3610 Yet Another Story of Rock-paper-scissors
- ZOJ 3610 Yet Another Story of Rock-paper-scissors
- Yet Another Story of Rock-paper-scissors(水题)
- ZOJ 3610 Yet Another Story of Rock-paper-scissors
- ZOJ 3610Yet Another Story of Rock-paper-scissors
- ZOJ3610-Yet Another Story of Rock-paper-scissors
- K. Yet Another Story of Rock-paper-scissors
- zoj 3610 Yet Another Story of Rock-paper-scissors 忽悠。。
- Rock-Paper-Scissors
- 【poj2339】Rock, Scissors, Paper
- JacksonWant ——iOS系统学习笔记(一)
- 引子
- 【Android开发小记--18】数据存储2--SharedPreferences 以及 PreferenceActivity
- 代码清单4-2
- path classpath
- CF100015A - Another Rock-Paper-Scissors Problem
- [ShellExtension]属性页扩展-IShellPropSheetExt实现
- 平凡的一天
- Centos 6.3虚拟机及VMware tools的安装过程
- hdu 3938 Portal
- CF100015B - Ball Painting
- JacksonWant ——iOS系统学习笔记(二)
- JAVA 中Math.ceil()、Math.floor()和Math.round()的区别
- HDU 1166 敌兵布阵【简单典型的线段树问题】