c语言编程

[复制链接]
查看11 | 回复2 | 2008-9-23 09:06:15 | 显示全部楼层 |阅读模式
问题描述:
Nic和Susan在玩一个有趣的游戏:在游戏开始前,他们先约定一个正整数n,同时令m=1。游戏过程中,每个人都可以将m的值扩大2到9中的任意倍数。第一个使得m≥n的人就是最后的赢家。
假设Nic和Susan都十分聪明,并且游戏过程中都使用最佳的策略,问谁会是最后的赢家(Nic总是第一个先玩)。
数据输入:
一个正整数n(1≤n≤2^32-1)。
数据输出:
在使用最佳的策略的情况下,如果Nic必胜,则输出“Nic”。如果Susan必胜,则输出“Susan”。否则输出“God”。
样例输入:
9
样例输出:
Nic
是的

回复

使用道具 举报

千问 | 2008-9-23 09:06:15 | 显示全部楼层
哈哈,这个问题主要是找到1/9想赢得那个人必须要这样的条件:他乘完的数要让对方陷入困境,比如说9000吧1/9就是1000,但想赢得那个人决不能报1000,要不就给对方机会了,那就报999,还要找1/2,就是500,[500-999]是关键,然后看500,还是以上思路,不管500以后的数,得[28-55]是关键,再重复,得[2-3],[2-3]第一个人掌握着,第一个人赢,如果是[10-18]第二个人赢程序如下#includeint main(){ int n,b,m,flag; printf("iputn a number between 2 and 32767:\n"); scanf("%d",&...
回复

使用道具 举报

千问 | 2008-9-23 09:06:15 | 显示全部楼层
Nic总是取2*n?...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行