博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sicily 4952. Another Rock-Paper-Scissors Problem 解题报告
阅读量:5875 次
发布时间:2019-06-19

本文共 1118 字,大约阅读时间需要 3 分钟。

题目传送门:

 

 思路:

  比较简单的一道题,不过也要理清逻辑思路。

  姑且用1 2 3 代替R P S比较方便,题目意思是首先会出123 ,每次达到3的次方数之后就开始有人模仿,所以接着会出231 312,然后出

231312123来打败模仿他前9次的人...

  这里注意各个分界点是3的次方数,又有3 ^ 25 < 10 ^ 12 < 3 ^ 26 . base[i]记录3 ^ i是多大。count 记录滚动赢的累计次数,例如计算

n = 33时,因为n > 27 ,n - 27 = 6,意思是如果第6次出1,则第33次必须出2.又有6 > 3,6 - 3 = 3.即第3次出3,则第6次必须出1。同理第3次

出的要累计赢第一次出的2次,因此总共算的话第33次出的要赢第一次出的1 + 1 + 2 = 4次,而第一次出1,所以第33次出(1 + 4) % 3 = 2。这里

还要注意如果整除3表示出3,但余数是0.

 

代码:

1 #include 
2 using namespace std; 3 4 int main(){ 5 long long n; 6 long long base[26]; 7 base[0] = 1; 8 for(int i = 1;i < 26;i++) 9 base[i] = base[i - 1] * 3;10 while(cin >> n && n != 0){11 int count = 1;12 for(int i = 25;i >= 0;i--){13 while(n > base[i]){14 n -= base[i];15 count++;16 }17 }18 count = count % 3;19 if(count == 1)20 cout << 'P' << endl;21 else if(count == 2)22 cout << 'S' << endl;23 else24 cout << 'R' << endl;25 }26 return 0;27 }

 

转载于:https://www.cnblogs.com/jolin123/p/3536369.html

你可能感兴趣的文章
高德地图上线全国最全小客车、货车限行提醒功能
查看>>
网康慧眼云发现企业网络中的XcodeGhost失陷手机
查看>>
同济吴志强:可持续发展的智慧同济校园
查看>>
网络安全老兵座谈:云安全审计(评估)应该怎么做?
查看>>
虚拟化能够满足将来的存储系统的需求
查看>>
关于weblogic配置pg和sqlserver数据源的注意事项
查看>>
从搬运工做起 动视云让游戏不再受终端束缚
查看>>
IBM系列企业云计算产品和服务正式亮相
查看>>
揭秘Pure Storage即将推出的高端阵列
查看>>
XSS Trap—XSS DNS防护的简单尝试
查看>>
TensorFlow的开源与Hadoop的开源有什么不同?
查看>>
Android使用ViewStub提高布局性能
查看>>
不玩手机的步步高玩大数据:一条短信让你多买一只澳洲大龙虾
查看>>
技术团队负责人应该具备怎样的能力
查看>>
OTT IPTV商机广阔 运营商如何进一步发掘CDN机会窗口
查看>>
使用软件定义的架构 打好IT基础
查看>>
“数”领教育山东师范大学与新华三集团开启大数据战略合作
查看>>
当一个大数据团队加入存储公司之后会发生什么?
查看>>
攻击更多更厉害 美国将提高大银行网络安全标准
查看>>
我们为何需要安全传输层协议(TLS)
查看>>