下面的这2个题目难了小弟2年!从2010年12月到2011年2月都没办法解决,跪求实现代码!!
题目:
李先生岁数的平方与他的夫人的岁数之和是1053,而他的夫人的岁数的平方与他的岁数之和是873,请编写程序计算李先生及其夫人的岁数各是多少。 有两个正整数a和b,已知a*b=2048,求a、b各为何值时,a+b的值最小。
题目:
李先生岁数的平方与他的夫人的岁数之和是1053,而他的夫人的岁数的平方与他的岁数之和是873,请编写程序计算李先生及其夫人的岁数各是多少。 有两个正整数a和b,已知a*b=2048,求a、b各为何值时,a+b的值最小。
解决方案 »
- Exception in thread "main" java.lang.NoSuchMethodError: main
- Scanner的nextLine为什么不能阻塞了
- 请教判断三角形不成立时怎么退出程序?我附上我的源程序
- 数组可以动态定定长度吗,并且还要保存原来的数据
- 求助~
- JBuilder 9 如何做.EXE文件 ?
- 大家帮忙看看,JSP错误是什么原因?
- 超简单问题,快来接份啊!:java如何从键盘上输入数据?
- 链表与数组相互调用
- ***有参加过大连雅奇软件开发高级研修班的吗?希望大家给点建议...***
- HttpURLConnection无法得到cookie
- java有没有关于验证数字类型的类,如是否负小数,是否自然数等等,不要说什么自已判断
public class Main { public static void main(String[] args) {
for(int i=1;i<150;i++)
for(int j=1;j<150;j++)
if(i*i+j==1053||i+j*j==873)
System.out.println("李先生 "+i+" 夫人"+j);
}
}run:
李先生 31 夫人92
李先生 32 夫人29
李先生 89 夫人28
李先生 144 夫人27
private static int b;
private static int MinSum = 2049; private static int count() { for (int a = 1; a < 2048; a++) {
for (int b = 1; b < 2048; b++) {
if(a*b == 2048){
System.out.println("a: "+a+" ,b: "+b);
if(MinSum>a+b)
MinSum = a+b;
}
}
}
System.out.println("a+b的最小值为:"+MinSum);
return 0;
} public static void main(String[] args) {
count();
}}
为什么是两个for循环呢,楼上的能不能给我详细的说下,拜谢.....
public static void main(String[] args) {
// 因为至今还记录没有活到200岁以上的人,所以最大值使用了200,否则就要变成妖怪了
for (int i = 1; i < 200; ++i) {
// 李先生的岁数为i
for (int j = 1; j < 200; ++j) {
// 李夫人岁数为j
if (i * i + j == 1053 && j * j + i == 873) {
System.out.printf("李先生%d岁,李夫人%d岁", i, j);
}
}
}
}
}
李先生32岁,李夫人29岁
public static void main(String[] args) {
// 从条件可以判断出最大的年龄
final int maxAge = (int) Math.max(Math.sqrt(1053), Math.sqrt(873)); // 李先生的岁数为i,李夫人岁数为j
for (int i = 1; i <= maxAge; ++i) {
for (int j = 1; j < maxAge; ++j) {
if (i * i + j == 1053 && j * j + i == 873) {
System.out.printf("李先生%d岁,李夫人%d岁", i, j);
}
}
}
}
}
public class T {
private static int li;
private static int wife;
private static int a;
private static int b;
public static void main(String[] args) {
question1(1053,873);
question2(2048);
}
private static void question1(int i, int j) {
boolean y = false; //判断是否有解
//按正常点的,从1岁到200都试过,先遍历li的值
for(li=1; li<=200; li++) {
//li确定后,从一个条件就可以求出wife
wife = i - li*li;
//判断是否两个条件都符合,找到就输出
if((li*li+wife == i) && (wife*wife+li == j)) {
System.out.println("Mr Li's age is " + li + ",His wife's age is " + wife);
y = true;
}
}
if(y == false) {
System.out.println("无解.");
}
}
private static void question2(int i) {
int sum =0; //sum不好赋值,先赋个0,在下面通过判断标志,把第一对a,b赋给它
int a1=0, b1=0; //存放最小值时的a和b
boolean first = false;
//一个数i除了它本身最大的因数肯定不大于i/2,而a=1包括了数i乘以本身的情况
for(a=1; a<=i/2; a++) {
if(i%a == 0) { //判断能否被整除
b = i/a;
}
if(first == false) {
sum = a+b;
first = true;
} else { //此时sum已经不再是0了.
if(a+b < sum) { //判断比原来的小就替换掉
sum = a+b;
a1 = a; b1 = b;
}
}
}
System.out.println("当a和b为:" + a1 + "," + b1 +"时,有最小结果为:" + sum);
}
}