开元周游
德国频道
查看: 3260|回复: 29
打印 上一主题 下一主题

半年前人家给我出道题,我偷懒编程解决了。

[复制链接]
跳转到指定楼层
1#
发表于 17.9.2009 16:55:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
即时机票
本帖最后由 jh2009 于 19.9.2009 22:00 编辑

A、B、C三人年龄未知。A年龄数字个位和十位的位置对调一下就是B的年龄;C的年龄两倍是A与B两个年龄之差;B的年龄是C的十倍。问:A、B、C三人的年龄各是多少?

public class Ages {

    private int x, y;
    private static Ages INSTANCE = null;
   
    private Ages(){
        //Nothing to do
    }
   
    public static Ages getInstance(){
        if (INSTANCE==null){
            INSTANCE = new Ages();
        }
        return INSTANCE;
    }

    private double ageA() {
        return 10 * x + y;
    }

    private double ageB() {
        return 10 * y + x;
    }

    private double ageC() {
        return ageB() / 10;
    }

    public boolean condition() {
        boolean condition = (2 * ageC() == ageA() - ageB()) || (2 * ageC() == ageB() - ageA());
        return condition;
    }

    private void computeAges() {
        for (x = 1; x < 9; x++) {
            for (y = 1; y < 9; y++) {
                if (condition()) {
                    System.out.println("Result:");
                    System.out.println("A=" + ageA());
                    System.out.println("B=" + ageB());
                    System.out.println("C=" + ageC());
                }
            }
        }
    }

    public static void main(String[] args) {
        Ages.getInstance().computeAges();
    }
}

评分

1

查看全部评分

30#
发表于 27.9.2009 10:18:56 | 只看该作者
回复 支持 反对

使用道具 举报

29#
发表于 27.9.2009 09:39:26 | 只看该作者
回复 支持 反对

使用道具 举报

28#
发表于 27.9.2009 09:16:00 | 只看该作者
回复 支持 反对

使用道具 举报

27#
 楼主| 发表于 26.9.2009 14:36:41 | 只看该作者
这是个大家都可以没事动动脑的娱乐而已,搞那么复杂谁还来玩啊。
回复 支持 反对

使用道具 举报

26#
发表于 26.9.2009 13:17:23 | 只看该作者
这个题目要是那么简单,就真的是小学生题目了。
jh2009 发表于 26.9.2009 13:21


你的算法不也就是穷举了一下吗?

连《数据结构》这本书都用不上

有空儿答一下我的“类华容道”题吧
回复 支持 反对

使用道具 举报

25#
 楼主| 发表于 26.9.2009 12:21:52 | 只看该作者
这个题目要是那么简单,就真的是小学生题目了。
回复 支持 反对

使用道具 举报

24#
发表于 26.9.2009 10:12:58 | 只看该作者
A、B、C三人年龄未知。A年龄数字个位和十位的位置对调一下就是B的年龄;C的年龄两倍是A与B两个年龄之差;B的年龄是C的十倍。问:A、B、C三人的年龄各是多少?

public class Ages {

    private int x, y;
    priv ...
jh2009 发表于 17.9.2009 17:55


我反算了一下,楼主一定是记错了一个数字:

原题中,B的年龄是C的“六”倍或“五”倍

解得整数解:

A: 45
B: 54
C: 9



A: 54
B: 45
C: 9
回复 支持 反对

使用道具 举报

23#
发表于 26.9.2009 09:59:18 | 只看该作者
A、B、C三人年龄未知。A年龄数字个位和十位的位置对调一下就是B的年龄;C的年龄两倍是A与B两个年龄之差;B的年龄是C的十倍。问:A、B、C三人的年龄各是多少?

public class Ages {

    private int x, y;
    priv ...
jh2009 发表于 17.9.2009 17:55


貌似没有整数解

小学数论题目:

A: (ab) -- 10a+b
B: (ba) -- 10b+a
C: 9(b-a) if b>a
    9(a-b) if a>b

10b+a = 10*9(b-a) if b>a
10b+a = 10*9(a-b) if a>b

i.e.
91a = 80b if b>a
100b = 89a if a>b

无整数解
回复 支持 反对

使用道具 举报

22#
发表于 25.9.2009 19:20:55 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点信息

站点统计| 举报| Archiver| 手机版| 小黑屋

Powered by Discuz! X3.2 © 2001-2014 Comsenz Inc.

GMT+1, 17.11.2024 06:22

关于我们|Apps

() 开元网

快速回复 返回顶部 返回列表