循环-猜数字

【题】

猜数字(选作)


有如下一组数字,其中每个数字都在 1 ~ 63 之间,

 1  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63
 2  3  6  7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 63
 4  5  6  7 12 13 14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 63
 8  9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 63
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

现在需要编写一个程序,当从键盘输入某数字在且仅在哪几行出现了,该程序可以“猜”出这个数字是几。

输入:

    程序的输入是一串以空白符分开的数字,当输入 0 时表示输入结束。

输出:

    输出猜到的数字。

  测试输入关于“测试输入”的帮助 期待的输出关于“期待的输出”的帮助 时间限制关于“时间限制”的帮助 内存限制关于“内存限制”的帮助 额外进程关于“{$a} 个额外进程”的帮助
测试用例 1 以文本方式显示
  1. 1 2 0↵
以文本方式显示
  1. 3↵
1秒 64M 0
测试用例 2 以文本方式显示
  1. 2 1 0↵
以文本方式显示
  1. 3↵
1秒 64M 0
测试用例 3 以文本方式显示
  1. 2 4 0↵
以文本方式显示
  1. 10↵
1秒 64M 0

【分析】
         这题涉及到二进制数,对那组数字分析可以发现,第i行中每个数的二进制数值,其第i位都为1。又题意为“ 在且仅在哪几行出现了”,所以猜到的数字对应的二进制数,哪位为1,这个数就在哪行出现。
         例如测试用例3,这个数在2行和4行出现,对应的结果10,10转换为二进制位1010,其有且仅有第2位和4位都为1.

【代码】

#include "stdio.h"
#include "math.h"


int main()
{
	int num;
	int res = 0;
	while (1)
	{
		scanf("%d", &num);
		if (num == 0)
		{
			break;
		}
		getchar();
		res += pow(2, num-1);
	}
	printf("%d\n", res);
    return 0; 
}



  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
猜数字游戏是一种玩家与电脑进行互动的游戏,在游戏开始时,电脑会随机生成一个1-1000之间数字作为答案。然后玩家通过键盘输入猜测的数字,电脑会根据玩家的猜测给出相应的提示,提示玩家猜的数字是太大了还是太小了,直到玩家猜答案或者猜测次数达到上限。如果玩家猜了答案,游戏结束并给出恭喜的提示,如果猜测次数达到上限,游戏也会结束并给出相应的提示。 以下是一个Python的猜数字游戏的示例代码: ```python import random def guess_number(): answer = random.randint(1, 1000) chances = 10 print("游戏规则:") print("1、随机生成一个1-1000之间的数。") print("2、10次猜数字的机会,如果没有猜正确,游戏结束。") print('3、输入字母"q",则退出游戏。') print() for i in range(chances): print(f"第{i + 1}次猜数字") guess = input("输入[1-1000]之间数字:") if guess.isdigit(): guess = int(guess) if guess < answer: print(f"您输入的数字太小了,您还有{chances - i - 1}次机会,重新输入:") elif guess > answer: print(f"您输入的数字太大了,您还有{chances - i - 1}次机会,重新输入:") else: print(f"你只用了{i + 1}次就猜对啦,好腻害呀~") break elif guess == "q": print("退出游戏!") break else: print("输入的内容必须为整数,重新输入:") if i + 1 == chances: print("您输入已经超过10次,游戏结束!") guess_number() ``` 这个示例代码,我们使用了`random`模块来随机生成一个1-1000之间数字作为答案。在每次循环,根据玩家的猜测与答案的比较给出相应的提示,同时记录猜测的次数。如果玩家猜答案,输出恭喜的提示并结束游戏;如果玩家输入"q",则退出游戏;如果猜测次数达到上限,输出游戏结束的提示。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值