POJ 2505 && HDU 1517 A multiplication game(博弈论)
来源:互联网 发布:通达信主图源码 编辑:程序博客网 时间:2024/05/16 04:38
Description
两个人轮流用2~9来乘n,使n不断扩大,n开始为1。当给一个固定值k,谁先使n超过k谁赢
Input
多组用例,每组用例占一行为一个整数k,以文件尾结束输入
Output
对于每组用例,输出谁赢(Stan为先手)
Sample Input
162
17
34012226
Sample Output
Stan wins.
Ollie wins.
Stan wins.
Solution
假设输入的数时n,如果我方想赢,那么必然在我方赢之前,我方需要给出这样一个数m1,使得n/18 <= m1 < n/9,那么对方给出的m2这个数必须满足m2*2 < n/9 && m2*9 >= n/18,显然对方不会甘心给出m2的,所以我方给出的m3需要“强迫”对方达到m2,即(m3*9)*2 < n/9 && (m3*2)*9 >= n/18,化简后得到n/(18*18) <= m3 < n/(18*9),将此时与m1比较得知这个游戏以18为周期且胜败取决于n的值,即如果n在不断除18后得到的小于18的数m小于等于9则先手赢,否则先手输
Code
#include<iostream>#include<cstdio>#include<cmath>using namespace std;typedef long long ll;int main(){ ll n; while(~scanf("%lld",&n)) { while(n>18) n=ceil(n/18.0);//注意是上取整 if(n<=9) printf("Stan wins.\n"); else printf("Ollie wins.\n"); } return 0;}
0 0
- POJ 2505 && HDU 1517 A multiplication game(博弈论)
- HDU 1517 A Multiplication Game(博弈论)
- HDU 1517 A Multiplication Game (博弈论入门题)
- HDU 1517 && poj 2505 A Multiplication Game (基础博弈)
- HDU 1517 A Multiplication Game 博弈论+找规律
- HDU 1517 (POJ 2505) A Multiplication Game 简单博弈
- 【HDU1517】A Multiplication Game(博弈论)
- poj 2505 A multiplication game(博弈)
- POJ 2505 A multiplication game(博弈)
- HDU(1517)A Multiplication Game(博弈)
- HDU 1517 A Multiplication Game(博弈)
- HDU 1517 A Multiplication Game(博弈)
- hdu 1517 A Multiplication Game(规律)
- poj 2505 A multiplication game
- POJ 2505--A multiplication game
- POJ-2505-A multiplication game
- poj 2505 A multiplication game
- [poj]2505 A multiplication game
- output
- 操作系统一些概念
- [unity3d程序] 纹理扩散
- Fatal signal 11问题的解决方法
- 对话框使用
- POJ 2505 && HDU 1517 A multiplication game(博弈论)
- SSO
- java的内存回收
- OC的学习笔记汇总
- 文字渐变效果:图层中的mask属性
- MySQL存储过程详解 mysql 存储过程
- unbuntu安装JDK
- NYOJ_77 开灯问题
- 详解Java解析XML的四种方法