展开全部

解法:

假设鬼谷子给的两个数为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解决鬼谷子问题相关推荐

  1. java孙膑与庞涓_鬼谷子数问题的JAVA实现

    问题:一天,鬼谷子随意从2-99中选取了两个数.他把这两个数的和告诉了庞涓,把这两个数的乘积告诉了孙膑.但孙膑和庞涓彼此不知到对方得到的数.第二天,庞涓很有自信的对孙膑说:虽... 问题: 一天,鬼谷 ...

  2. java孙膑与庞涓_《鬼谷子的局3》—— 读后总结

    这本开始,故事渐渐进入正题.鬼谷四子开始崭露头角... 谷中学习 鬼谷四子--张仪.苏秦.庞涓.孙膑,在鬼谷已经学习三年,这期间庞涓偶然得知吴起兵法一书,并得到鬼谷子的真传. 期间张仪与庞涓总是斗气, ...

  3. java孙膑与庞涓_一个很难的数学问题(智力140以下勿进) 旧版Java程序设计Page97 3.12题 庞涓...

    一个很难的数学问题(智力140以下勿进) 旧版Java程序设计Page97 3.12题 庞涓 2016-08-23 0 0 0 暂无评分 其他 1 积分下载 如何获取积分? 一个很难的数学问题(智力1 ...

  4. java孙膑与庞涓_这个题那是-数学题孙膑,庞涓都是鬼谷子的徒弟,一天鬼出了这道题目:他从2到9 爱问知识人...

    在其它地方看到答案,比较费解,贴出来让大家共同学习 1)按照庞的第一句话的后半部分,我们肯定庞知道的和S肯定不会大于54. 因为如果和54<S<54+99,那么S可以写为S=53+a,a& ...

  5. java孙膑和庞涓问题_孙膑庞涓两人斗智斗勇,庞涓死在乱箭之下

    本文由(弹笑历史)原创,转载请注明文章出处 鬼谷子是历史上有名的军事家,纵横家.教出来的徒弟也都是各有千秋.比如苏秦,张仪,庞涓等.历史上的孙膑,从小就很聪明.今天我们要说的就是孙膑和庞涓两人斗智斗勇 ...

  6. java孙膑和庞涓问题_孙膑几乎被庞涓断了生路,他又是怎么复仇的?

    毁了容貌断了双腿,孙膑几乎被庞涓断了生路,他是如何复仇的?下面趣历史小编为大家带来详细的文章介绍. <孙子兵法>相信已是家喻户晓,其作者孙武被誉为"兵圣"而受世人尊崇. ...

  7. java孙膑和庞涓问题_孙膑双腿和脸被毁,几乎被庞涓断了所有生路,他后来是怎样复仇的...

    中国历史上各类的兵法典籍中,<孙子兵法>可以称得上是所有兵法典籍之首了,而他的作者也被称为百世兵家之师,拥有着极其崇高的地位.而同一时期除了孙武,还有其他非常有名的军事人才,这其中最有故事 ...

  8. java孙膑和庞涓问题_庞涓与孙膑的故事

    展开全部 孙膑曾与庞涓为同窗,庞涓后来出仕魏国32313133353236313431303231363533e59b9ee7ad9431333365653866,他认为自己的才能比不上孙膑,于是暗地 ...

  9. java孙膑和庞涓问题_庞涓VS孙膑——一个很难的数学问题(智力140以下勿进)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 4和13 假设两个数为a.b,和为X,积为Y. 首先,找出符合这样条件的X: 对于满足a+b=X的所有a和b,积Y的质因子个数大于2.这样得到一个组合A( ...

最新文章

  1. Could not find com.afollestad:material-dialogs:0.7.3.1解决
  2. 传智播客韩顺平老师2011ssh实战项目校内网的数据库设计32张表全解
  3. yocto中文环境搭建
  4. C语言用DFS实现找到图的所有路径(邻接矩阵实现)
  5. IOS设备唯一标示符的方案比较
  6. 字符,字符串,int之间互相转换
  7. 怎么打败腾讯[纯讨论]
  8. 乘方计算(信息学奥赛一本通-T1069)
  9. centos7/rhel7下安装redis4.0集群
  10. MFC下debug改成release版本出现问题及解决办法
  11. win2008 server 多IP配置
  12. github最全计算机类电子书下载
  13. sql查询各科成绩前三名
  14. 揭示模式(Revealing Module)
  15. 腾讯云API弹性公网IP踩坑
  16. 如何从Ubuntu系统装回windows系统
  17. MobaXterm 最下面显示服务器信息
  18. Linux下烧写工具DNW和USB驱动安装
  19. UnityShader 图片像素化风格渲染
  20. 蓝牙耳机啥牌子音质好?听音乐最好的蓝牙耳机分享

热门文章

  1. 看到结局不会失望的,中国传统美食
  2. 深度linux触摸板失灵,deepin下触摸板无法使用
  3. 【StoneDB join 算法分析】查询模块
  4. 【软件测试教程】手机号码归属地开发文档
  5. 1.可编程并行接口实验
  6. 传输接口的对比 USB、Thunderbolt、HDMI、DP、type-c
  7. 输入一段英文句子,单词之间用若干空格隔开,将每个单词的首字母转换为大写字母。 例如,“I am very glad to see you”的转换结果为“I Am Very Glad To See Yo
  8. 自定义android模拟器,在模拟器上运行自定义Android ROM
  9. PLC模拟量数据的处理
  10. 西门子PLC模拟量输入数据类型变换