| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:[求助]谁赢得问题!
只看楼主 加入收藏
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
 问题点数:0 回复次数:6 
[求助]谁赢得问题!

A Multiplication Game

--------------------------------------------------------------------------------

Time limit: 1sec. Submitted: 143
Memory limit: 32M Accepted: 78

Source : Waterloo ACM Programming Contest Sep 22, 2001

--------------------------------------------------------------------------------

Stan and Ollie play the game of multiplication by multiplying an integer p by one of the numbers 2 to 9. Stan always starts with p = 1, does his multiplication, then Ollie multiplies the number, then Stan and so on. Before a game starts, they draw an integer 1 < n < 4294967295 and the winner is who first reaches p >= n.


Input

Each line of input contains one integer number n.


Output

For each line of input output one line either

Stan wins.

or

Ollie wins.

assuming that both of them play perfectly.

Sample Input

162
17
34012226
Sample Output
Stan wins.
Ollie wins.
Stan wins.

搜索更多相关主题的帖子: game his numbers always Memory 
2006-12-10 16:41
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

我也是工大软件学院的,不过我大二了.
这题不考编程水平,只靠智力,你自己再好好想想吧,
做ACM的时候,老是问别人是很难进步的,呵呵。


对不礼貌的女生收钱......
2006-12-10 16:54
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
好吧!我在好好想想吧!我有些想不明白p到底都和谁乘2到9吗!
对了!你是怎么知道咱们是一个学校的!呵呵!还是学长呢!以后请多关照!呵呵!

该学习了。。。
2006-12-10 16:58
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用zhanghuan_10在2006-12-10 16:58:44的发言:
好吧!我在好好想想吧!我有些想不明白p到底都和谁乘2到9吗!//恩,p每次与2-9之间的某个数相乘.
对了!你是怎么知道咱们是一个学校的!呵呵!还是学长呢!以后请多关照!呵呵!

我不经常上论坛.
你在这里问问题问得满天都是你的acm问题帖,我想不知道都难...
这是个博弈问题。
大体思路:
假设输入的数是n,如果A想赢,则A在赢之前,需要A达到这样的一个数:n/18<=a1<n/9.B不会让A出现这样的情况,则B
给出的数,要符合a2*2<n/9且a2*9>=n/18.而这个数显然B只喜欢出而不喜欢拿到,所以A就要让对手不得不达到a2,所以有
a3*9<n/18,a3*2>=n/(18*9);现在我们比较a1和a3,可以看到如果A首先给出了一个在n不断除18后的得到不足18的数m,A就可以胜利。
所以这最终归结于n的取值,如果n不断除18后的得到不足18的数m,如果1<m<=9则先手胜利,即stan wins.如果9<m<=18则后手胜利.
代码自己写,每次copy别人可不行哦


对不礼貌的女生收钱......
2006-12-10 17:16
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 

以后得自己多想想了!咱们专业以后是不是课更多了!这是我写的!错了!让我自己再想想!
#include <stdio.h>

int main()
{
int m;

while(scanf("%d", &m) != EOF)
{
while(1)
{
if(m > 9&&m <= 18)
{
printf("Ollie wins.\n");
break;
}
else if(m <= 9&&m > 0)
{
printf("Stan wins.\n");
break;
}
m /= 18;
}
}

return 0;

}


该学习了。。。
2006-12-10 17:46
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
你的编码还不是很熟练,不过可以慢慢来,
改成double应该就行了.想想为什么.

对不礼貌的女生收钱......
2006-12-10 17:56
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 
呵呵!它给的测试数据很大!而我只用了int所以错了!通过了!多谢学长了!

该学习了。。。
2006-12-10 17:59
快速回复:[求助]谁赢得问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012215 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved