Feedback
2008-12-12 23:31 |
直接使用Mathematica 一步就算出来,不就是一个3*3矩阵么?哈哈
楼主很喜欢动手,赞赏。
Happy your weekend toooooo!
回复 更多评论
2008-12-12 23:48 |
C的年龄段两倍是A与B两个年龄的差数?
看了半天也没理解他意思:年龄段和年龄是两个概念!题目有误还是字打错了?
回复 更多评论
2008-12-13 00:01 |
另外,程序也写错了
应该是:
b = 10 * c;
a = 12 * c;
或者
b = 10 * c;
a = 8 * c;
你之前那样写就直接把A的年龄人为定义地比B大了。而实际上题目没这么说。
真正的解答肯定不复杂,但是也没你写得那么简单。或者我这么说——你的解答还是不够严谨,就这样交上去人家应该不会给奖品的 :D
回复 更多评论
2008-12-13 00:19 |
@koven
的确是手误了,多谢指出,现已经改正。
回复 更多评论
2008-12-13 00:46 |
我写了一段很烂的代码,得到相当多的答案。我觉得谁有时间还可以优化一下:
public class Main
{
static double x, y;
private static double personA(){
return 10*x+y;
}
private static double personB(){
return 10*y+x;
}
private static double personC(){
return personB()/10;
}
public static boolean formel1(){
return 2*personC() == personA()-personB();
}
public static boolean formel2(){
return 2*personC() == personB()-personA();
}
private static void getResult(boolean formel){
for (x = 1; x < 9; x ++) {
for (y = 1; y < 9; y++) {
if (formel){
System.out.println("get result:");
System.out.println("A=" + personA());
System.out.println("B=" + personB());
System.out.println("C=" + personC());
}
}
}
}
public static void main(String[] args) {
getResult(formel1());
getResult(formel2());
}
}
回复 更多评论
2008-12-13 00:51 |
sorry 忘记说了:
x, y代表个位和十位数
formel1 和 formel2 分别代表 A比B大 或者 B比A大的情况
回复 更多评论
2008-12-13 02:49 |
formel2算不出答案,所以只用formel1。所以程序这样写才正确。但是代码写的还是太屎,大家将就点看~~ :p
程序比较长,是因为把心算部分也写在程序里了。
public class Test
{
static double x, y;
private static double personA(){
return 10*x+y;
}
private static double personB(){
return 10*y+x;
}
private static double personC(){
return personB()/10;
}
public static boolean formel1(){
return 2*personC() == personA()-personB();
}
public static boolean formel2(){
return 2*personC() == personB()-personA();
}
private static void getResult(){
for (x = 1; x < 9; x ++) {
for (y = 1; y < 9; y++) {
if (formel1()){
System.out.println("get result:");
System.out.println("A=" + personA());
System.out.println("B=" + personB());
System.out.println("C=" + personC());
}
}
}
}
public static void main(String[] args) {
getResult();
}
}
回复 更多评论
2008-12-13 03:14 |
完美般!嘿嘿~~
public class Test
{
//个位和十位
static int x, y;
private static double personA(){
return 10*x+y;
}
private static double personB(){
return 10*y+x;
}
private static double personC(){
return personB()/10;
}
//是否满足条件:C的年龄两倍是A与B 两个年龄的差数
public static boolean condition(){
boolean condition= (2*personC() == personA()-personB()) || (2*personC() == personB()-personA()) ;
return condition;
}
private static void getResult(){
for (x = 1; x < 9; x ++) {
for (y = 1; y < 9; y++) {
if (condition()){
System.out.println("Result:");
System.out.println("A=" + personA());
System.out.println("B=" + personB());
System.out.println("C=" + personC());
}
}
}
}
public static void main(String[] args) {
getResult();
}
回复 更多评论
2008-12-13 03:25 |
如果还要优化,还可以把personA()和personB()都定义成int型的,然后在personC()里强制 return (double)personB()/10;这样结果就会是:
Result:
A=54
B=45
C=4.5
而不会成为:
Result:
A=54.0
B=45.0
C=4.5
还节约的内存。
回复 更多评论
2008-12-13 10:41 |
将A的年龄数字的位置对调一下,就是B的年龄;C的年龄两倍是A与B
两个年龄的差数;而B的年龄是C的10倍
将A的年龄数字的位置对调一下,就是B的年龄 =>A与B的年龄差是9的倍数。
C的两倍是这个差数=>C的年龄是4.5的倍数,=>B的年龄是45的倍数=>
B=45或90
=>C=4.5或9
=>A-B=9或18
这种题目还要写程序算,而且程序还是没质量的暴力枚举。昏倒。
什么团队啊。
回复 更多评论
2008-12-13 10:47 |
@koven
恩很符合java编程理念
回复 更多评论
2008-12-13 11:20 |
@koven
呵呵,非常感谢不断改进,程序员需要这种任劲来不断提升自已。
@sunnycare
你的解法不错,好的团队应该虚心学习。
回复 更多评论
2008-12-13 11:22 |
我想到的是解方程,哈哈!!
然后突然发现,那些数学知识已经忘的差不多了
回复 更多评论
2008-12-13 13:20 |
@x.matthew
呵呵,智力题应该尽量用脑算,写程序就没意思了。
你们只出了一道智力题么?
回复 更多评论
2008-12-13 15:17 |
就是考算法和数据结构的智力题
回复 更多评论
2008-12-13 16:19 |
程序员可以思考出答案,也可以算出答案,没什么不对的,学习
回复 更多评论
2008-12-13 18:27 |
@sunnycare
"=>A与B的年龄差是9的倍数。"
如果这个规律是正确的,那属于很复杂的心算,或者说是复杂规律的总结,当中跳掉很多思维过程。
"=>B=45或90
=>C=4.5或9
=>A-B=9或18"
可惜答案错误。
回复 更多评论
2008-12-13 21:00 |
@koven
一个数除以9的余数,等于该数各位数字和除以9的余数。
由于A和B的各位数字和相等,所以他们的差是9的倍数。
滤掉B=90的情况。为什么滤掉,因为进一步求出的A,B会有矛盾。
这道题目年龄会有小数,本身就不合理。
另外一组答案,
5.4,4.5,0.45
如果年龄允许的小数位更多,那么答案可能更多。
我只想提供一种思路。哈哈
回复 更多评论
2008-12-14 12:09 |
难道我机器有毛病??还是论坛哪一方面出问题啦?在首页怎么还是显示“年龄段”呀?
回复 更多评论
2008-12-14 12:34 |
//感觉有时候把数学方法写成程序不知道行不行,帮忙指点一下
package org.shz.counter;
public class Calculation {
public static void main(String[] args) {
for (double i = 0; i < 10; i++) {
for (double j = 0; j < 10; j++) {
double A = 10 * i + j;
double B = 10 * j + i;
double C = B / 10;
if (!(A == 0 && B == 0 && C == 0)) {
if (A - B == 2 * C) {
System.out.println("A:" + A);
System.out.println("B:" + B);
System.out.println("C:" + C);
}
}
}
}
System.out.println("OK");
}
}
回复 更多评论
2008-12-14 14:44 |
由题中的条件10C=B ,,隐含的条件0<B<=100 则有0<C<10,用C的年龄计数循环,大大减少循环次数,
回复 更多评论
2008-12-14 18:26 |
用java编写面向过程的程序还不如不用java呢。
回复 更多评论
2008-12-14 23:36 |
@咕嘎
是我忘修改摘要所致,太粗心了。
回复 更多评论
2008-12-16 10:28 |
这是一道程序叙述题,哪里是智力题?列方程就行,基本上没什么逻辑判断
回复 更多评论
2008-12-16 10:31 |
@徐尧
是智力题,只是程序员用的这种解题方式觉是变成了一个结果的枚举了。
sunnycare 的解题思路你可以看一下。
回复 更多评论