A、B均为一个五位数且满足以下条件:
1、 A+20085=B
2、A里面的所有数字不重复
3、B里面的所有数字不重复
4、A与B之间的数字不能重复
即A、B这两个五位数是由0~9十个数字组成的相互之间不重复的数且满足A+20085=B
求打印满足条件的A、B
public class sum {
public static void main(String[] args) {
for (int i = 10234; i < 99999-20085; i++) {
char [] charArray = String.valueOf(i).toCharArray();
boolean boo = true;
boo = checkOne(charArray);
if (!boo) {
continue;
}
int res = i+20085;
char [] charArray02 = String.valueOf(res).toCharArray();
boo = checkOne(charArray02);
if (!boo) {
continue;
}
boo = checkTwo(charArray, charArray02);
if (!boo) {
continue;
}
System.out.println(i+"+"+20085+"="+res);
}
}
/**
* 检查charArray内部之间是否有重复
* @param 传递charArray字符数组
* @return 返回布尔类型,true表示没有重复,false表示有重复
*/
public static boolean checkOne(char [] charArray){
boolean boo = true;
for (int i = 0; i < charArray.length-1; i++) {
for (int j = i+1; j < charArray.length; j++) {
if (charArray[i]==charArray[j]) {
boo = false;
}
}
}
return boo;
}
/**
* 检查charArray和charArray02是否有重复
* @param charArray 传递charArray字符数组
* @param charArray02 传递charArray02字符数组
* @return 返回布尔类型,true表示没有重复,false表示有重复
*/
public static boolean checkTwo(char [] charArray,char [] charArray02){
boolean boo = true;
for (int i = 0; i < charArray.length; i++) {
for (int j = 0; j < charArray02.length; j++) {
if (charArray[i]==charArray02[j]) {
boo = false;
}
}
}
return boo;
}
}
============================================================================================================================
public class mySum {
public static void main(String[] args) {
for (int i = 10234; i < 99999-20085; i++) {
boolean boo = true;
boo = checkOne(i);
if (!boo) {
continue;
}
int res = i+20085;
boo = checkOne(res);
if (!boo) {
continue;
}
boo = checkTwo(i, res);
if (!boo) {
continue;
}
System.out.println(i+"+"+20085+"="+res);
}
}
/**
* 将一个5位整数拆分成五个0至9之间的数
* @param i 穿入的5位整数
* @return 返回一个长度为5的整数数组
*/
public static int [] getArray(int i){
int [] getcount = new int [5];
int mpp = i;
for (int j = 0; j < getcount.length; j++) {
getcount[j] = mpp%10;
mpp = mpp/10;
}
return getcount;
}
/**
* 检查整数i之间的各个位数是否重复
* @param i 传入的整数参数
* @return 返回布尔类型,true表示不存在重复,false表示存在重复
*/
public static boolean checkOne(int i){
boolean boo = true;
int [] getcount = getArray(i);
for (int l = 0; l < getcount.length-1; l++) {
for (int k = l+1; k < getcount.length; k++) {
if(getcount[l]==getcount[k]){
boo = false;
}
}
}
return boo;
}
/**
* 检查m和n两个整数之间的各个位数之间是否重复
* @param m 传入的整数m
* @param n 传入的整数n
* @return 返回布尔类型,true表示不存在重复,false表示存在重复
*/
public static boolean checkTwo(int m,int n){
boolean boo = true;
int [] getcountm = getArray(m);
int [] getcountn = getArray(n);
for (int l = 0; l < getcountm.length; l++) {
for (int k = 0; k < getcountn.length; k++) {
if(getcountm[l]==getcountn[k]){
boo = false;
}
}
}
return boo;
}
}