1、魔术的猜数字游戏原理是什么?
其实这里是利用二进百制的原理学
computer science的人应该能马上反应出来。
因为数度字小于64=2的6次方所以只要6张卡知片表示每个数字用6个二进制就能表示。每张卡
片的第一个数表示第几个二进制上有1而其余全道是0.
比如:十进制4= 二进制100。此外这张卡片其余的数用二进制表示在该回位上一定是1.2 |" q4 q
-z7 i( P: _比如37 化成二进制为答100101 = 1 + 100 + 100000= 十进制的1+4+32所以选择对应的卡片就行了。
2、求解猜数字游戏
设所选数十位是A,个位是B,此数表达为10A+B
按它所说,最后得出的数=百10A+B-A-B=9A
因为A是1-9的一个数,所以最后得出的数一定是9,18,27,36,45,54,63,72,81中的一个,而它们对应的图度象是相同的
每次出现的图不同是因为你试一次以后,他会换9,18,27,36,45,54,63,72,81
这几个数字的图,所以导致你以为你想什么他就显什么,你每次看先9是什么样的图,然后点,就是9那个图,再试1次9的图换了,你再点,还是9那个图
还不懂就没办法了
3、编写一个猜数字游戏。用户给出一个1到100之间的整数,程序通过提问来猜测用户所想的数是什么
就1个折半查找嘛。。。。
简单写了个,貌似不太合题意,但7步以内能猜到任何1-100的数字,因为我要求回答电脑的答案是3个,1,是,2,等,0,不是。可能不和要求,你看了后具体提下问题该怎么问,反正我觉得这种要求3种答案的像是作弊,呵呵。因为涉及是否等于边界的问题,50、25(75)、38(63、87)……我觉得还非得加入“等于”这个答案才解得出来。另外,我每行基本上都有tab键让格式美观的……到了网页上貌似tab这个纠结的键的原因让代码。。。你编译之前Cril+A全选然Alt+F8整理格式吧。C++源码:
#include<iostream>
using namespace std;
int main()
{
int Num[100];
int i,n = 0,mid,high = 99,low = 0,flag1 = 0,flag2; //flag1代表找没找到,flag2表示电脑问题答案的与否
int goal;
for(i = 0;i < 100;i ++)
{
Num[i] = i + 1;
}
cout<<"当电脑提问后请输入1代表大于,2代表等于,0代表小于"<<endl;
while(!flag1 && high > low && n < 7)
{
goal = (Num[high] + Num[low]) / 2;
mid = (high + low) / 2;
cout<<"你要找的数大于"<<goal<<"么?"<<endl;
n ++;
cin>>flag2;
if(n == 7 && goal == 99 && flag2 == 1) //对100特殊处理,没有这个if语句,当你想着100时
{ //你会输入7个1,然后程序告诉你输入错误或者在耍他。
flag1 = 2; //对应的如果连续输入7个0的话你想着的数字绝对是
break; //小于1的,程序可以判断,这个if只是针对100这个特殊数字
} //可能是因为你要找1-100,而建立数组是0-99的原因吧
if(flag2 == 1) //写程序测试的时候就要注意边界问题。
{
low = mid;
}
else if(flag2 == 0)
{
high = mid;
}
else
{
flag1 = 1;
break;
}
}
if(flag1 == 1)
{
cout<<"你的数字是"<<goal<<endl;
}
else if(flag1 == 2) //对100特殊处理的结果输出
{
cout<<"你的数字是"<<100<<endl;
}
else
{
cout<<"你输入错误或者你在耍我"<<endl;
}
return 0;
}
4、JAVAWEB猜数字游戏1到100(这是老师给的思路最好按照老师给的思路来)
public class Test {
public static void main(String[] args) {
int b = (int) (Math.random()*100 + 1);
while (true) {
try {
Scanner in=new Scanner(System.in);
int a=in.nextInt();
if(a < 1 || a > 100) {
System.out.println("范围不合法");
} else if(a > b) {
System.out.println(a + "太大");
} else if (a < b) {
System.out.println(a + "太小");
} else {
System.out.println("你终于猜对了");
break;
}
} catch(Exception e) {
System.out.println("数字格式不合法");
continue;
}
}
}
}
5、文曲星中的猜数字游戏,要猜一个四位数,有什么通用公式?
算法:主要是复杂的逻辑判断。基本的想法是先在六步里判断出是哪4个数来字,然后一次性根据前面积累的B值判断出正确的位置(如果此时有多个选择则选择其中之一输出,然后根据这次输出的反馈再判断)。
问题的关键是设置什么算法可以再六步内判断出这四个数字?这里给出的自是,前三步总是做固定的猜测,分别是“1,2,3,4”,“2,1,5,6”,“7,8,1,2”, 设每次得到的A反馈分别为A1,A2,A3,然后根据sum=A1+A2+A3的值来做判断。
显然sum>=3,因为没被猜得只有9。如果sum为3,那么9必然在其中,1,2必不在其中,然后可跟别根据A1,A2,A3的值来判断3,4,5,6,7,8 (当然还要更一步判断)。如果sum为4,这四个数必然为3,4,5,6,7,8 中的4个...当然如果你有兴趣,可以对其他的试着做类似的逻辑判断,建立在这些判断之下然后再进一步决定下面猜测什么。
这里给zhidao出C++实现的代码,代码里能看清楚具体怎么根据sum的和来判断,以及怎么根据判断结果继续猜。如果你想让计算机猜的是8327,那么下面是执行的一个界面:
代码测试例子如下:
6、怎么破解或玩1-100猜数字游戏
1尽量缩小范围:像我这样你说能成功吗?数字是50,我第一次猜是30,第二次猜31,猜中可能吗?
2.先猜边缘数字:先猜20以下或80以上
3.不要太离谱:跟第一条相反
祝你成功
7、看得数猜数字的游戏公式
答案如下~!
说话依次编号为S1,P1,S2。
设这两个数为x,y,和为s,积为p。
由S1,P不知道这两个数,所以s不可能是两个质数相加得来的,而且s<=41,因为如果s>41,那么P拿到41×(s-41)必定可以猜出s了(关于这一点,参考老马的证明,这一点很巧妙,可以省不少事情)。所以和s为{11,17,23,27,29,35,37,41}之一,设这个集合为A。
1).假设和是11。
11=2+9=3+8=4+7=5+6,如果P拿到18,18=3×6=2×9,只有2+9落在集合A中,所以P可以说出P1,但是这时候S能不能说出S2呢?我们来看,如果P拿到24,24=6×4=3×8=2×12,P同样可以说P1,因为至少有两种情况P都可以说出P1,所以A就无法断言S2,所以和不是11。
2).假设和是17。
17=2+15=3+14=4+13=5+12=6+11=7+10=8+9,
很明显,由于P拿到4×13可以断言P1,而其他情况,P都无法断言P1,所以和是17。
3).假设和是23。
23=2+21=3+20=4+19=5+18=6+17=7+16=8+15=9+14=10+13=11+12,
咱们先考虑含有2的n次幂或者含有大质数的那些组,如果P拿到4×19或7×16都可以断言P1,所以和不是23。
4).假设和是27。如果P拿到8×19或4×23都可以断言P1,所以和不是27。
5).假设和是29。如果P拿到13×16或7×22都可以断言P1,所以和不是29。
6).假设和是35。如果P拿到16×19或4×31都可以断言P1,所以和不是35。
7).假设和是37。如果P拿到8×29或11×26都可以断言P1,所以和不是37。
8).假设和是41。如果B拿到4×37或8×33,都可以断言P1,所以和不是41。
综上所述:这两个数是4和13。
8、“猜数字”游戏如何次数最少猜对答案
?
9、有没有类似于魔术的猜数字游戏?,别人拿出一张纸笔叫我随便说出一个100以内的数字,他先写了一个数字
其实这里是利用二进制的原理学
computer science的人应该能马上反应出来。
因为数字小于64=2的6次方所以只要6张卡片表示copy每个数字用6个二进制就能表示。每张卡
片的第一个数表示第几个二进制上有1而其余全是0.
比如:十进制4= 二进制100。此zhidao外这张卡片其余的数用二进制表示在该位上一定是1.2 |" q4 q
-z7 i( P: _比如37 化成二进制为100101 = 1 + 100 + 100000= 十进制的1+4+32所以选择对应的卡片就行了。