从2到50间取两数(可相同),将和告诉A,积告诉B。A问B说:知道 两数是什么吗?B说:不知道。A:那我现在知道了。B:我也知道 了。 求大神算法分析

问题描述

如题,求大神指教。不胜感激。这个算法哪里不对,为什么运行结果有几个。或者有什么好点的算法。或者什么能直接笔算的方法吗???packageguessNumber;publicclassGuessNumber{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstub//循环,遇到B不知道的组合就交给A。//和的所有种可能的组合交给积,若只有一种不知道。则是Bb=newB();Aa=newA();for(inti=2;i<=49;i++){for(intj=i;j<=49;j++){if(b.unknows(i*j)){if(a.knows(j+i)){//A知道则B知道了推理if(b.knows(i*j)){System.out.print(i+"*"+j+"=");System.out.println(i*j);}}}}}System.out.println(a.knows(75));System.out.println(b.unknows(1764));}}上面主方法packageguessNumber;publicclassA{/**和给A,所有组合看B能否直接求解*有且只有一个组合是B不能直接求解的则A知道了。*/publicbooleanknows(inta){Bb=newB();intk=0;for(inti=2;i<=49;i++){for(intj=i;j<=49;j++){if(i+j==a){if(b.unknows(i*j)){k++;}}}}if(k==1)returntrue;returnfalse;}}packageguessNumber;publicclassB{/**将积传给B,B不知道是哪两个数则为真*/publicbooleanunknows(inta){intk=0;for(inti=2;i<=49;i++){for(intj=i;j<=49;j++){if(i*j==a)k++;}}if(k==1)returnfalse;returntrue;}/**A知道了则B知道了*积的所有组合看A是否知道*若A仅有一种知道,则B知道。*/publicbooleanknows(inta){AaObj=newA();intk=0;for(inti=2;i<=49;i++){for(intj=i;j<=49;j++){if(i*j==a)if(aObj.knows(i+j)){k++;}}}if(k==1)returntrue;returnfalse;}}

解决方案

时间: 2024-09-22 07:50:56

从2到50间取两数(可相同),将和告诉A,积告诉B。A问B说:知道 两数是什么吗?B说:不知道。A:那我现在知道了。B:我也知道 了。 求大神算法分析的相关文章

java se-随机数入两个数求期中素数和 求大神帮看看代码哪里错了

问题描述 随机数入两个数求期中素数和 求大神帮看看代码哪里错了 package exe; import java.applet.*; import java.awt.*; import java.awt.event.*; public class Prime extends Applet implements ActionListener { Label l1,l2; TextField t1,t2; TextArea T1; Button b1; public void init() { l1

c++-两个排序问题求大神指教!!

问题描述 两个排序问题求大神指教!! 1.Problem 在英文中,若某些单词由相同的字母组成,且字母的个数均相等,那么这些单词互为Anagram.例如note. tone是一组Anagrams,top.opt.pot也是一组Anagrams. 现在给出一个字典,要求输出字典中没有Anagram的单词,输出时,按单词的字典序从小到大输出.注意,判断是否为Anagram时,请忽略单词间的大小写,例如,noTE.tOnE被视作时一组Anagrams. Input 输入数据有若干行,每行有若干单词,每

ios- 同一界面下 两个collectionView 如何使用 求大神解答

问题描述 同一界面下 两个collectionView 如何使用 求大神解答 我想在一个controller下做两个不section 和cell 数不同的 collectionView 请大神指教 给跪了!!! #import "ViewController.h" #define Screen_Width [UIScreen mainScreen].bounds.size.width //获取屏幕高度 #define Screen_Height [UIScreen mainScreen

c语言取小数问题,急求大神解答!

问题描述 c语言取小数问题,急求大神解答! 程序是#include int main() { float a,b; int n; scanf("%f",&a); n=(1000*a+0.5); b=(n*1.0)/1000; printf("%f",b); return 0; } 输入123.4567 输出是123.457001 输入1234.567 输出时1234.567017 输入12345.67 输出是12345.669922 为什么会这样呢?求大神解

java初学者 为什么两个格式相同的代码编译出来结果不同求大神指导

问题描述 java初学者 为什么两个格式相同的代码编译出来结果不同求大神指导 import java.util.*; public class a { public static void main(String[] args){ Scanner in=new Scanner(System .in); System.out.println("请出拳"); System.out.println("请选择: 1剪刀 2石头 3布"); int a=in.nextInt(

spring batch 说step取不到 求大神!!!!!!!!!!

问题描述 spring batch 说step取不到 求大神!!!!!!!!!! 错误信息:信息: Loading XML bean definitions from class path resource [message_job.xml]Exception in thread ""main"" org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configurati

取模运算-求大神解答关于大数幂的运算和去模运算,谢谢!!c语言

问题描述 求大神解答关于大数幂的运算和去模运算,谢谢!!c语言 RT 比如说,2的10000000次方,我用double倒是可以算,但是如何去模呢... 2的10000000次方对1234567取模... 谢谢大神们! 解决方案 我记得以前在蓝桥杯上做过这样的题,你可以使用一个for循环进行计算,然后在每次计算以后就用得数对1234567取模,然后再使用取模后的数继续进行 运算,这样就不会溢出了. 解决方案二: 快速幂取模,对数时间. //求a的b次方对x取余数 int powmod(int a

hwnd-C#求大神给看看,句柄没问题,可以SengMessage,getGetWindowText取不到值

问题描述 C#求大神给看看,句柄没问题,可以SengMessage,getGetWindowText取不到值 C#求大神给看看,句柄没问题,可以SengMessage,为什么不能getGetWindowText取不到值 [DllImport("user32.dll", EntryPoint = "GetWindowText")] public static extern int GetWindowText(IntPtr hwnd, string lpString,

硬盘温度居高不下,利用率老是100%,内存的利用率却从来没超过50%,求大神赐教。

问题描述 硬盘温度居高不下,利用率老是100%,内存的利用率却从来没超过50%,求大神赐教. 上图: 电脑买的时候自带4G内存,后来自己添加了4G,内存利用率从来没超过50%,电脑硬盘的利用率老是%80以上,结果导致硬盘温度高的不行,电脑也就卡的不行.温度过高有该除尘的原因,除此之外有没有别的原因,我的第二快内存是不是压根就没用上啊,所以导致频繁的读取硬盘. 解决方案 HUAWEI VRP内存利用率 解决方案二: 你的8gb内存都用上了. 切换到详细信息标签,可以看到是什么程序在占用硬盘和cpu