哪位大佬,给我看下这个用java如何写?
有一工人甲,工资是三位数ABC元(一个字母代表0-9中一个数字),组内其它五个工人的工资可以这样表示:ACB,BAC,BCA,CAB,CBA,且这五个工人的工资总额为3194元。请问工人甲的工资具体是多少?
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 = ABC + ACB + BAC + BCA + CAB + CBA; if (sum == 3194) { System.out.println("工人甲的工资: " + ABC); } } } } } }好像没找到结果,你看看是不是我的代码有问题
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); } } } } } }
class Untitled { /** * 分析:特殊五位数加和: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 * 其他特征不明显,可后期优化。 * */ public static void main(String[] args) { find(0,0,0); System.out.println("统计次数:"+count); } /** 次数统计 */ static int count; /** * 嵌套判断 **/ public static void find(int a, int b, int c){ count++; if(122*a+212*b+221*c==3194){ System.out.println("统计结果:"+(a*100+b*10+c)); } // 步长为2,有前期分析得到 c+=2; if(c>9){ c=0; b+=1; } if(b>9){ b=0; a+=1; } if(a>9) return; find(a,b,c); } }
[此贴子已经被作者于2018-5-22 22:27编辑过]
class Untitled { /** * 分析:三角阵的起点可模拟坐标系实现,简化代码 * */ public static void main(String[] args) { for(int i=-9;i<=9;i++){ for(int j=-9;j<=9;j++){ if((i>j&&i+j>0)||(j>i&&i+j<0)){ int r = Math.abs(i); int c = Math.abs(j); System.out.print(r>c?r-c:c-r); } else System.out.print(" "); } System.out.println(); } } }