A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯超 高级黑马   /  2012-9-16 23:09  /  2181 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有一个数学等式:AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。
例如:13*62==31*26
给我想要的算法和答案

9 个回复

正序浏览
冯超 高级黑马 2012-9-17 11:15:14
9#
java代码
运用到高级for。
import java.util.Arrays;


public class count {
        public static void main(String[] args)
        {
                //AB * CD = BA * DC
                int[] AB = new int[81];
                int[] CD = new int[81];
                int i = 0;
                for(int a = 1; a <= 9; a++)
                        for(int b = 1; b <= 9; b++)
                        {
                                AB[i++] = a * 10 + b;
                        }
                CD = AB;
                for(int a: AB)
                {
                        int m = a % 10 * 10 + a / 10;
                        for(int b = 0; b < CD.length; b++)
                        {
                                int n = CD[b] % 10 * 10 + CD[b] / 10;
                                if(a * CD[b] == m * n && a != m && a != n)
                                        System.out.println(a + "*" + CD[b] + "==" + m + "*" + n );
                        }
                }
        }

}
/************************************************/
答案
12*42==21*24
12*63==21*36
12*84==21*48
13*62==31*26
13*93==31*39
14*82==41*28
21*24==12*42
21*36==12*63
21*48==12*84
23*64==32*46
23*96==32*69
24*21==42*12
24*63==42*36
24*84==42*48
26*31==62*13
26*93==62*39
28*41==82*14
31*26==13*62
31*39==13*93
32*46==23*64
32*69==23*96
34*86==43*68
36*21==63*12
36*42==63*24
36*84==63*48
39*31==93*13
39*62==93*26
41*28==14*82
42*12==24*21
42*36==24*63
42*48==24*84
43*68==34*86
46*32==64*23
46*96==64*69
48*21==84*12
48*42==84*24
48*63==84*36
62*13==26*31
62*39==26*93
63*12==36*21
63*24==36*42
63*48==36*84
64*23==46*32
64*69==46*96
68*43==86*34
69*32==96*23
69*64==96*46
82*14==28*41
84*12==48*21
84*24==48*42
84*36==48*63
86*34==68*43
93*13==39*31
93*26==39*62
96*23==69*32
96*46==69*64
回复 使用道具 举报
吕书凯 发表于 2012-9-17 00:02
你的漏了很多个

嗯。我代码中把i写成1了。
回复 使用道具 举报
本帖最后由 寇龙飞 于 2012-9-16 23:57 编辑

。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
吕书凯 发表于 2012-9-16 23:47
哈哈,明显不对,我两重就搞定了

目测都是对的~~只不过写法,思路和简洁程度上不同~~
回复 使用道具 举报
本帖最后由 寇龙飞 于 2012-9-17 00:28 编辑
  1. package com.itheima.test;

  2. public class MathOfAvici {

  3.         public static void main(String[] args) {
  4.                 for(int i=1; i<=9; i++) {
  5.                         for(int j=1; j<=9; j++) {
  6.                                 for(int m=1; m<=9; m++) {
  7.                                         for(int n=1; n<=9; n++) {
  8.                                                 if(i!=j && m!=n && (10*i+j)*(10*m+n) ==(10*j+i)*(10*n+m) )
  9.                                                         System.out.println((10*i+j)+"*"+(10*m+n)+"="+(10*j+i)+"*"+(10*n+m));
  10.                                         }
  11.                                 }
  12.                         }
  13.                 }
  14.         }
  15. }
复制代码
  1. 12*42=21*24
  2. 12*63=21*36
  3. 12*84=21*48
  4. 13*62=31*26
  5. 13*93=31*39
  6. 14*82=41*28
  7. 21*24=12*42
  8. 21*36=12*63
  9. 21*48=12*84
  10. 23*64=32*46
  11. 23*96=32*69
  12. 24*21=42*12
  13. 24*63=42*36
  14. 24*84=42*48
  15. 26*31=62*13
  16. 26*93=62*39
  17. 28*41=82*14
  18. 31*26=13*62
  19. 31*39=13*93
  20. 32*46=23*64
  21. 32*69=23*96
  22. 34*86=43*68
  23. 36*21=63*12
  24. 36*42=63*24
  25. 36*84=63*48
  26. 39*31=93*13
  27. 39*62=93*26
  28. 41*28=14*82
  29. 42*12=24*21
  30. 42*36=24*63
  31. 42*48=24*84
  32. 43*68=34*86
  33. 46*32=64*23
  34. 46*96=64*69
  35. 48*21=84*12
  36. 48*42=84*24
  37. 48*63=84*36
  38. 62*13=26*31
  39. 62*39=26*93
  40. 63*12=36*21
  41. 63*24=36*42
  42. 63*48=36*84
  43. 64*23=46*32
  44. 64*69=46*96
  45. 68*43=86*34
  46. 69*32=96*23
  47. 69*64=96*46
  48. 82*14=28*41
  49. 84*12=48*21
  50. 84*24=48*42
  51. 84*36=48*63
  52. 86*34=68*43
  53. 93*13=39*31
  54. 93*26=39*62
  55. 96*23=69*32
  56. 96*46=69*64
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马