ブルーブリッジカップの2つの2桁の乗算は1つの2桁の乗算に1つの3桁の乗算に等しい
2729 ワード
次の式を見てください.
□□ x □□ = □□ x □□□
2つの2桁の乗算は、1つの2桁に1つの3桁の乗算に等しいことを示します.限定条件がなければ、このような例が多い.
しかし、現在の限定は、この9つのブロックは、1~9の9つの数字を表し、0を含まない.この式の1から9の数字は1回しか現れません!例:
46 x 79 = 23 x 158 54 x 69 = 27 x 138 54 x 93 = 27 x 186 .....
プログラミングして、可能な限りの状況を出力してください.注意:
左の2つの乗数交換は同じスキームで、繰り返し出力しないでください.異なるシナリオの出力順序は重要ではありません
□□ x □□ = □□ x □□□
2つの2桁の乗算は、1つの2桁に1つの3桁の乗算に等しいことを示します.限定条件がなければ、このような例が多い.
しかし、現在の限定は、この9つのブロックは、1~9の9つの数字を表し、0を含まない.この式の1から9の数字は1回しか現れません!例:
46 x 79 = 23 x 158 54 x 69 = 27 x 138 54 x 93 = 27 x 186 .....
プログラミングして、可能な限りの状況を出力してください.注意:
左の2つの乗数交換は同じスキームで、繰り返し出力しないでください.異なるシナリオの出力順序は重要ではありません
import java.util.*;
public class Main{
private static List<Vector<Character>> filter;
private static void fullPremutation(Vector<Character> source,Vector<Character> result){
if(source.size()==0&&isfilter(result)){
boolean exit=false;
int a=(result.elementAt(0)-'0')*10+(result.elementAt(1)-'0');
int b=(result.elementAt(2)-'0')*10+(result.elementAt(3)-'0');
for(int i=0;i<filter.size();i++){
int fa=(filter.get(i).elementAt(0)-'0')*10+(filter.get(i).elementAt(1)-'0');
int fb=(filter.get(i).elementAt(2)-'0')*10+(filter.get(i).elementAt(3)-'0');
if(a==fb&&b==fa){
exit=true;
break;
}
}
if(exit==false){
filter.add(new Vector<Character>(result));
}
}
// source 1-9
for(int i=0;i<source.size();i++){
result.add(source.elementAt(i));
source.remove(i);
fullPremutation(source,result);
source.add(i,(char)result.elementAt(result.size()-1));
result.remove(result.size()-1);
}
}
// a*b=c*d
private static boolean isfilter(Vector<Character> result){
int a=(result.elementAt(0)-'0')*10+(result.elementAt(1)-'0');
int b=(result.elementAt(2)-'0')*10+(result.elementAt(3)-'0');
int c=(result.elementAt(4)-'0')*10+(result.elementAt(5)-'0');
int d=(result.elementAt(6)-'0')*100+(result.elementAt(7)-'0')*10+(result.elementAt(8)-'0');
if(a*b==c*d) return true;
return false;
}
//
private static void print(Vector<Character> vector) {
System.out.printf("%c%cx%c%c=%c%cx%c%c%c", vector.elementAt(0),
vector.elementAt(1),vector.elementAt(2),vector.elementAt(3),
vector.elementAt(4),vector.elementAt(5),vector.elementAt(6),
vector.elementAt(7),vector.elementAt(8));
}
public static void main(String[] args){
Vector<Character> source=new Vector<Character>();
Vector<Character> result=new Vector<Character>();
filter=new ArrayList<Vector<Character>>();
for(int i=1;i<=9;i++){
source.add((char) ('0'+i));
}
fullPremutation(source,result);
for(int i=0;i<filter.size();i++){
print(filter.get(i));
System.out.println();
}
}
}