java孙膑与庞涓_用java解决鬼谷子问题
展开全部
解法:
假设鬼谷子给的两个数为x1,x2,庞涓为A(知道sum=x1+x2),孙膑为B(知道pro=x1*x2),本题当中最重要e68a843231313335323631343130323136353331333264656231的三句话就是
① A说,我不知道,你也一定不知道
② B说,那我知道了
③ A说,那我也知道了
一句一句分析:
① =>
a. sum大于等于2+3=5,小于等于99+100=199的一个数(其实5和199也可以排除,因为如果和数是5或者199,就知道是哪两个数相加了);
b. pro不能等于一些特定的数,例如6,因为如果是6就知道肯定是2和3相乘得来的。这类数字的特点是只能由一组2至100范围内的数相乘得来。此处用一个函数来判断(isBknow(int x)),B是否能判断出x是由哪两个数相乘,若能返回1,不能则返回0。
实现方法:for循环(5
② =>
a. B看自己手中的数pro,有很多种相乘的可能,若x1+x2的值与数组sumArray[]中的某个值相等,则B就可以知道是哪两个数相乘了。并且要求只能与sumArray[]中某一个值相等,因为若有多组数的和都存在于sumArray[]中,则B还是不能确定是哪两个数相乘。
③ =>
a. 满足x1+x2= sumArray[i]的x1,x2有好几组,于是就有很多对应的积,只能有一个积满足②中的条件。
代码分析:
(1)B是否能判断出x是由哪两个数相乘,即若x只能由一组数相乘得来,那么B可以判断出,返回1,若不能,返回0
publicstatic int isBknow(int x){
inttag=0; //找到0对乘数与被乘数
for(inti=low;(tag<2)&&(i<=java.lang.Math.sqrt(x));i++){ //鬼谷子给的范围是(low,high)
if((x%i==0)&&(x/i<=high))tag++; //找到1对乘积的x的组合
}
if(tag==2)return 0; //若不止一对则B无法判断出是哪两个数相乘
elsereturn 1;
}
(2)求出满足①的数组sumArray
for(intsum=2*low+1;sum<=(2*high-1);sum++){ //庞涓说的第一句话:虽然我不知道这两个数是多少 但我肯定你也不知道
inttag=0;
intstart;
if(sum<=low+high)start=low;
elsestart=sum-high; //要求两个加数都在2到100的范围内
for(inti=start;(i<=sum/2)&&(tag==0);i++){
intj=sum-i;
if(isBknow(i*j)==1){
tag=1;
}
}
if(tag==0){
sumArray[k]=sum;
k++;
}
}
(3)满足条件②③
for(int i=0;i
intstart;
intcount1 = 0; //一共有几种组合,使得和为sumArray[i]
intcount2 = 0;
intproResult=0; //B手上的积pro
intx1=0,x2=0; //鬼谷子的两个数
if(sumArray[i]<=low+high)start=low;
elsestart=sumArray[i]-high; //要求两个数大于等于2小于等于100
for(intj=start;j<=sumArray[i]/2;j++){
intpro=j*(sumArray[i]-j);
intflag=1;
for(intz=low; (z<=java.lang.Math.sqrt(pro))&&(flag==1); z++){
if((pro%z==0)&&(z!=j)){
inttemp=z+pro/z;
if(isInArray(sumArray,temp)==1){ //一旦在数组里,则表示B不能判断出是哪两个数相乘
flag=0; //跳出循环
count2++;
}
}
}
if(flag==1){
proResult=pro;
x1=j;
}
count1++;
}
if(count2==count1-1){
x2=sumArray[i]-x1;
System.out.println("和为"+sumArray[i]+"积为"+proResult+"; 鬼谷子给的两个数是:"+x1+","+x2);
}
}
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
java孙膑与庞涓_用java解决鬼谷子问题相关推荐
- java孙膑与庞涓_鬼谷子数问题的JAVA实现
问题:一天,鬼谷子随意从2-99中选取了两个数.他把这两个数的和告诉了庞涓,把这两个数的乘积告诉了孙膑.但孙膑和庞涓彼此不知到对方得到的数.第二天,庞涓很有自信的对孙膑说:虽... 问题: 一天,鬼谷 ...
- java孙膑与庞涓_《鬼谷子的局3》—— 读后总结
这本开始,故事渐渐进入正题.鬼谷四子开始崭露头角... 谷中学习 鬼谷四子--张仪.苏秦.庞涓.孙膑,在鬼谷已经学习三年,这期间庞涓偶然得知吴起兵法一书,并得到鬼谷子的真传. 期间张仪与庞涓总是斗气, ...
- java孙膑与庞涓_一个很难的数学问题(智力140以下勿进)
旧版Java程序设计Page97 3.12题
庞涓...
一个很难的数学问题(智力140以下勿进) 旧版Java程序设计Page97 3.12题 庞涓 2016-08-23 0 0 0 暂无评分 其他 1 积分下载 如何获取积分? 一个很难的数学问题(智力1 ...
- java孙膑与庞涓_这个题那是-数学题孙膑,庞涓都是鬼谷子的徒弟,一天鬼出了这道题目:他从2到9 爱问知识人...
在其它地方看到答案,比较费解,贴出来让大家共同学习 1)按照庞的第一句话的后半部分,我们肯定庞知道的和S肯定不会大于54. 因为如果和54<S<54+99,那么S可以写为S=53+a,a& ...
- java孙膑和庞涓问题_孙膑庞涓两人斗智斗勇,庞涓死在乱箭之下
本文由(弹笑历史)原创,转载请注明文章出处 鬼谷子是历史上有名的军事家,纵横家.教出来的徒弟也都是各有千秋.比如苏秦,张仪,庞涓等.历史上的孙膑,从小就很聪明.今天我们要说的就是孙膑和庞涓两人斗智斗勇 ...
- java孙膑和庞涓问题_孙膑几乎被庞涓断了生路,他又是怎么复仇的?
毁了容貌断了双腿,孙膑几乎被庞涓断了生路,他是如何复仇的?下面趣历史小编为大家带来详细的文章介绍. <孙子兵法>相信已是家喻户晓,其作者孙武被誉为"兵圣"而受世人尊崇. ...
- java孙膑和庞涓问题_孙膑双腿和脸被毁,几乎被庞涓断了所有生路,他后来是怎样复仇的...
中国历史上各类的兵法典籍中,<孙子兵法>可以称得上是所有兵法典籍之首了,而他的作者也被称为百世兵家之师,拥有着极其崇高的地位.而同一时期除了孙武,还有其他非常有名的军事人才,这其中最有故事 ...
- java孙膑和庞涓问题_庞涓与孙膑的故事
展开全部 孙膑曾与庞涓为同窗,庞涓后来出仕魏国32313133353236313431303231363533e59b9ee7ad9431333365653866,他认为自己的才能比不上孙膑,于是暗地 ...
- java孙膑和庞涓问题_庞涓VS孙膑——一个很难的数学问题(智力140以下勿进)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 4和13 假设两个数为a.b,和为X,积为Y. 首先,找出符合这样条件的X: 对于满足a+b=X的所有a和b,积Y的质因子个数大于2.这样得到一个组合A( ...
最新文章
- Could not find com.afollestad:material-dialogs:0.7.3.1解决
- 传智播客韩顺平老师2011ssh实战项目校内网的数据库设计32张表全解
- yocto中文环境搭建
- C语言用DFS实现找到图的所有路径(邻接矩阵实现)
- IOS设备唯一标示符的方案比较
- 字符,字符串,int之间互相转换
- 怎么打败腾讯[纯讨论]
- 乘方计算(信息学奥赛一本通-T1069)
- centos7/rhel7下安装redis4.0集群
- MFC下debug改成release版本出现问题及解决办法
- win2008 server 多IP配置
- github最全计算机类电子书下载
- sql查询各科成绩前三名
- 揭示模式(Revealing Module)
- 腾讯云API弹性公网IP踩坑
- 如何从Ubuntu系统装回windows系统
- MobaXterm 最下面显示服务器信息
- Linux下烧写工具DNW和USB驱动安装
- UnityShader 图片像素化风格渲染
- 蓝牙耳机啥牌子音质好?听音乐最好的蓝牙耳机分享
热门文章
- 看到结局不会失望的,中国传统美食
- 深度linux触摸板失灵,deepin下触摸板无法使用
- 【StoneDB join 算法分析】查询模块
- 【软件测试教程】手机号码归属地开发文档
- 1.可编程并行接口实验
- 传输接口的对比 USB、Thunderbolt、HDMI、DP、type-c
- 输入一段英文句子,单词之间用若干空格隔开,将每个单词的首字母转换为大写字母。 例如,“I am very glad to see you”的转换结果为“I Am Very Glad To See Yo
- 自定义android模拟器,在模拟器上运行自定义Android ROM
- PLC模拟量数据的处理
- 西门子PLC模拟量输入数据类型变换