简单数学题
口/口口+口/口口+口/口口=1 其中每个口的值都介于1~9
但每个口的值都不相同
搜索更多相关的解决方案:
数学题
----------------解决方案--------------------------------------------------------
其实用个排列加上一些优化,应该就可以得到答案了。不过现在没时间,嘿嘿,明天有时间的时候再做做看
----------------解决方案--------------------------------------------------------
该式子表示为:a[3]/a[1]a[2]+a[6]/a[4]a[5]+a[9]/a[7]a[8]并且a[3]/a[1]a[2]>a[6]/a[4]a[5]>a[9]/a[7]a[8]
那么根据推算,a[1]必须为1(假如为2,那么最大值为9/21+8/35+7/46<1)
程序代码:
public class Perm {
private int[] a = new int[10];
private void init(){
for(int i=1;i<=9;i++){
a[i]=i;
}
}
private boolean juge(){
int k1 = a[1]*10+a[2];
int k2 = a[4]*10+a[5];
int k3 = a[7]*10+a[8];
int t1 =a[3]*k2*k3;
int t2=a[6]*k1*k3;
int t3=a[9]*k1*k2;
boolean b = false;
if(t1>t2&&t2>t3&&t1+t2+t3==k1*k2*k3)
b=true;
return b;
}
private void printNumber(){
for(int j=1;j<=9;j++){
System.out.print(a[j]+" ");
}
System.out.println();
}
private void range(int index){
if(index==9&&juge()){
printNumber();
}
else{
for(int i=index;i<=9;i++){
int k = index;
swap(i,k);
range(k+1);
swap(i,k);
}
}
}
private void swap(int i, int j){
int temp =a[i];
a[i]=a[j];
a[j]=temp;
}
public static void main(String[] args) {
Perm p = new Perm();
p.init();
p.range(2);
}
}
运行了一下,速度不慢,我就不去优化了。结果为 1 2 9 3 4 5 6 8 7 ,也就是9/12+5/34+7/68=1private int[] a = new int[10];
private void init(){
for(int i=1;i<=9;i++){
a[i]=i;
}
}
private boolean juge(){
int k1 = a[1]*10+a[2];
int k2 = a[4]*10+a[5];
int k3 = a[7]*10+a[8];
int t1 =a[3]*k2*k3;
int t2=a[6]*k1*k3;
int t3=a[9]*k1*k2;
boolean b = false;
if(t1>t2&&t2>t3&&t1+t2+t3==k1*k2*k3)
b=true;
return b;
}
private void printNumber(){
for(int j=1;j<=9;j++){
System.out.print(a[j]+" ");
}
System.out.println();
}
private void range(int index){
if(index==9&&juge()){
printNumber();
}
else{
for(int i=index;i<=9;i++){
int k = index;
swap(i,k);
range(k+1);
swap(i,k);
}
}
}
private void swap(int i, int j){
int temp =a[i];
a[i]=a[j];
a[j]=temp;
}
public static void main(String[] args) {
Perm p = new Perm();
p.init();
p.range(2);
}
}
----------------解决方案--------------------------------------------------------