| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4132 人关注过本帖
标题:哪位大佬,给我看下这个用java如何写?
只看楼主 加入收藏
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
收藏
得分:0 
回复 9楼 林月儿
你的这种方法,在我脑海中有一丝飘过,但是还是java的思想比较简单

假如人生没有梦想,和咸鱼有什么区别!
2018-05-22 23:06
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 11楼 疯狂的小a
以下是引用疯狂的小a在2018-5-22 21:20:41的发言:

package com.xiaoa.test;

/**
 * 有一工人甲,工资是三位数ABC元(一个字母代表0-9中一个数字),组内其它五个工人的工资可以这样表示:ACB,BAC,BCA,CAB,CBA,且这五个工人的工资总额为3194元。请问工人甲的工资具体是多少?
 *
 *
 */
public class Demo3 {
    public static void main(String[] args) {
        for (int i = 0; i <= 9; i++) {
            for (int j = 0; j <= 9; j++) {
                for (int k = 0; k <= 9; k++) {
                    int ABC = i * 100 + j * 10 + k;
                    int ACB = i * 100 + k * 10 + j;
                    int BAC = j * 100 + i * 10 + k;
                    int BCA = j * 100 + k * 10 + i;
                    int CAB = k * 100 + i * 10 + j;
                    int CBA = k * 100 + j * 10 + i;
                    int sum = ACB + BAC + BCA + CAB + CBA;

                    if (sum == 3194) {
                        System.out.println("工人甲的工资: " + ABC);
                    }
                }
            }
        }
    }
}

工人甲的工资: 358


这个就是java思想吗?受教了

剑栈风樯各苦辛,别时冰雪到时春
2018-05-22 23:08
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
收藏
得分:0 
回复 12楼 林月儿
真的,你的这种是C语言的思想,指导你的这种解法!而我首先想到的就是遍历,所以用了for循环。我以前搞matlab的时候,也还是你这种思想!

假如人生没有梦想,和咸鱼有什么区别!
2018-05-22 23:12
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
以下是引用疯狂的小a在2018-5-22 23:12:29的发言:

真的,你的这种是C语言的思想,指导你的这种解法!而我首先想到的就是遍历,所以用了for循环。我以前搞matlab的时候,也还是你这种思想!


嗯,真厉害,不早了,明天还要上课呢...下了

剑栈风樯各苦辛,别时冰雪到时春
2018-05-22 23:16
疯狂的小a
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:39
帖 子:423
专家分:1871
注 册:2018-2-6
收藏
得分:0 
good nigth!

假如人生没有梦想,和咸鱼有什么区别!
2018-05-22 23:24
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:4 
引用了9楼的解释~
以下是引用林月儿在2018-5-22 22:25:12的发言:
   /**
     * 分析:特殊五位数加和:ACB,BAC,BCA,CAB,CBA表示为
     *    100A+200*(B+C)+10B+20*(A+C)+C+2*(A+B)=3194;
     *    122A+212B+221C=3194
     *  由于简单判断,122A+212B为偶数,故只有C为偶数等式成立
     *  则C的步长可以为2
     *  其他特征不明显,可后期优化。
     * */



C=(3194-(122A+212B))/221;

3194%221=100;

也就是说

(122A+212B)=100+221*k

(122A+212B)%221=100;

设x=122,y=212

y-x=90;

x-(y-x)=2x-y=122-90=32;

((y-x)-2*(2x-y))=3y-5x=90-2*32=26;

(2x-y)-(3y-5x)=7x-4y=6;

(3y-5x)-4*(7x-4y)=19y-33x=2;

50*(19y-33x)=100

950y-1650x=100;

又从19y-33x=2;可以推得

221*(19y-33x)%221=0;

也就是
(4199y-7293x)%221=0;

设k为通项表达式系数~

((4199+122k)y-(7293+212k)x%221)=0;

((4199+61k)y-(7293+106k)x+(950y-1650x))%221=100;

((5149+61k)y-(8943+106k)x)%221=100;

当k取-84时,有

(25y-39x)%221=100;

到这里,由于x为负数,所以这就走不下去了,要再用另一种方法~

回到式子
(A*x+B*y)%221=100;

可以让

(A*x+B*y)%221=0;

这样目的是让A和B的解找到通项系数~

具体解法,可以让
A*x%221=B*y

2x%221=23;

(2x*10)%221=20x%221=9;

(20x*25)%221=500x%221=(500%221)x%221=58x%221=4;

(58x*56)%221=(3248%221)x%221=154x%221=3;

(154x*74)%221=(11396%221)x%221=125x%221=1;

(125x*212)%221=201x%221=212=y;

(201x-y)%221=0;

(-20x-y)%221=0;

(y+20x)%221=0;

到这里,结合

(25y-39x)%221=100;

得,2*(y+20x)+(25y-39x)=(x+27y)%221=100;

到这里,求得A和B都等于正整数解了,但B的取值范围是27不符合题意,因此要求出符合题意的解~

因为
221/20=11余1;

所以有((1-k)x+(27+11k)y)%221=100;

让1-k保证为正数,则加上(x+20y)有

(((1-k)x+(27+11k)y)+(20x+y))%221=((21-k)x+(28+11k)y)%221=100;

由于A和B的取值范围只能是1~9,并且1已经搜索过了
所以k从19开始,也就是21-k=2开始

当k=19时,有

(2x+237y)%221=100;

也就是
(2x+(237%221)y)%221=(2x+16y)%221=100;

所以当A=2时,B=16;
因为16要大于9,因此还要继续搜索~

当k=18时,直接用前面得出的y的系数16减去11,得,B=5;

因此当A=3时,B有解为5

当A=4时,B=(5-11)+221=215;
当A=5时,B=215-11=204;
当A=6时,B=204-11=193;
当A=7时,B=193-11=182;
当A=8时,B=182-11=171;
当A=9时,B=171-11=160;

可以从解集中得知,只有当A=3时,B在1~9的范围内才有解,为5
故A,B都在1~9的范围内存在唯一解,为:

A=3
B=5

代入
A=3
B=5



C=(3194-(122A+212B))/221;



C=(3194-(122*3+212*5))/221=8;

所以ABC的结果是:

A=3;
B=5;
C=8;

所以最后得出工人甲的工资是358

------------------------------------------------------------

说个题外话:~

职员/工资

甲 358
乙 385
丙 538
丁 583
戊 835
己 853

为啥工资相差那么大,这还不说,那个工资不知道是按天算还是按月算的,嗯,我可以去看看具体情况~

[此贴子已经被作者于2018-5-23 04:33编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-23 03:39
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
以下是引用九转星河在2018-5-23 03:39:40的发言:

引用了9楼的解释~



C=(3194-(122A+212B))/221;

3194%221=100;

也就是说

(122A+212B)=100+221*k

(122A+212B)%221=100;

设x=122,y=212

y-x=90;

x-(y-x)=2x-y=122-90=32;

((y-x)-2*(2x-y))=3y-5x=90-2*32=26;

(2x-y)-(3y-5x)=7x-4y=6;

(3y-5x)-4*(7x-4y)=19y-33x=2;

50*(19y-33x)=100

950y-1650x=100;

又从19y-33x=2;可以推得

221*(19y-33x)%221=0;

也就是
(4199y-7293x)%221=0;

设k为通项表达式系数~

((4199+122k)y-(7293+212k)x%221)=0;

((4199+61k)y-(7293+106k)x+(950y-1650x))%221=100;

((5149+61k)y-(8943+106k)x)%221=100;

当k取-84时,有

(25y-39x)%221=100;

到这里,由于x为负数,所以这就走不下去了,要再用另一种方法~

回到式子
(A*x+B*y)%221=100;

可以让

(A*x+B*y)%221=0;

这样目的是让A和B的解找到通项系数~

具体解法,可以让
A*x%221=B*y

2x%221=23;

(2x*10)%221=20x%221=9;

(20x*25)%221=500x%221=(500%221)x%221=58x%221=4;

(58x*56)%221=(3248%221)x%221=154x%221=3;

(154x*74)%221=(11396%221)x%221=125x%221=1;

(125x*212)%221=201x%221=212=y;

(201x-y)%221=0;

(-20x-y)%221=0;

(y+20x)%221=0;

到这里,结合

(25y-39x)%221=100;

得,2*(y+20x)+(25y-39x)=(x+27y)%221=100;

到这里,求得A和B都等于正整数解了,但B的取值范围是27不符合题意,因此要求出符合题意的解~

因为
221/20=11余1;

所以有((1-k)x+(27+11k)y)%221=100;

让1-k保证为正数,则加上(x+20y)有

(((1-k)x+(27+11k)y)+(20x+y))%221=((21-k)x+(28+11k)y)%221=100;

由于A和B的取值范围只能是1~9,并且1已经搜索过了
所以k从19开始,也就是21-k=2开始

当k=19时,有

(2x+237y)%221=100;

也就是
(2x+(237%221)y)%221=(2x+16y)%221=100;

所以当A=2时,B=16;
因为16要大于9,因此还要继续搜索~

当k=18时,直接用前面得出的y的系数16减去11,得,B=5;

因此当A=3时,B有解为5

当A=4时,B=(5-11)+221=215;
当A=5时,B=215-11=204;
当A=6时,B=204-11=193;
当A=7时,B=193-11=182;
当A=8时,B=182-11=171;
当A=9时,B=171-11=160;

可以从解集中得知,只有当A=3时,B在1~9的范围内才有解,为5
故A,B都在1~9的范围内存在唯一解,为:

A=3
B=5

代入
A=3
B=5



C=(3194-(122A+212B))/221;



C=(3194-(122*3+212*5))/221=8;

所以ABC的结果是:

A=3;
B=5;
C=8;

所以最后得出工人甲的工资是358

------------------------------------------------------------

说个题外话:~

职员/工资

甲 358
乙 385
丙 538
丁 583
戊 835
己 853

为啥工资相差那么大,这还不说,那个工资不知道是按天算还是按月算的,嗯,我可以去看看具体情况~




厉害厉害

剑栈风樯各苦辛,别时冰雪到时春
2018-05-23 07:12
快速回复:哪位大佬,给我看下这个用java如何写?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018247 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved