package the_five_session__A;
import java.util.*;
/*
标题:神奇算式
由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。
*/
public class Magic_Formula
{
public static void main(String[] args)
{
int sum = 0;
int product;
for(int i=1; i<1000; i++)
{
int i_len = (i+"").length();
int j1=1;
// 第二个数的长度取决于第一个
for(int j=1; j<4-i_len; j++)
{
j1 = j1*10;
}
for(int j=j1; j<(j1*20); j++)
{
product = i*j;
if(fun(i, j, product) == true)
{
System.out.println(i + "*" + j + "=" +product);
sum++;
}
}
}
System.out.println("sum = "+sum);
}
public static boolean fun(int a, int b, int product)
{
//先将3个数转成字符串
String str_a = String.valueOf(a);
String str_b = String.valueOf(b);
String str_p = String.valueOf(product);
//在将3个字符串转成char 数组
char char_a[] = str_a.toCharArray();
char char_b[] = str_b.toCharArray();
char char_p[] = str_p.toCharArray();
//设计返回标志
boolean flag = false;
int f1 = 0;
int f2 = 0;
if(char_a.length+char_b.length != 4 || char_p.length != 4)
{
flag = false;
return flag;
}
// 循环判断
for(int i=0; i<char_a.length; i++)
{
for(int j=0; j<char_p.length; j++)
{
if(char_a[i] == char_p[j])
{
char_p[j] = 'a';
f1++;
break;
}
}
}
for(int i=0; i<char_b.length; i++)
{
for(int j=0; j<char_p.length; j++)
{
if(char_b[i] == char_p[j])
{
char_p[j] = 'a';
f2++;
break;
}
}
}
if(f1 == char_a.length && f2 == char_b.length)
flag = true;
return flag;
}
}
import java.util.*;
/*
标题:神奇算式
由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。
*/
public class Magic_Formula
{
public static void main(String[] args)
{
int sum = 0;
int product;
for(int i=1; i<1000; i++)
{
int i_len = (i+"").length();
int j1=1;
// 第二个数的长度取决于第一个
for(int j=1; j<4-i_len; j++)
{
j1 = j1*10;
}
for(int j=j1; j<(j1*20); j++)
{
product = i*j;
if(fun(i, j, product) == true)
{
System.out.println(i + "*" + j + "=" +product);
sum++;
}
}
}
System.out.println("sum = "+sum);
}
public static boolean fun(int a, int b, int product)
{
//先将3个数转成字符串
String str_a = String.valueOf(a);
String str_b = String.valueOf(b);
String str_p = String.valueOf(product);
//在将3个字符串转成char 数组
char char_a[] = str_a.toCharArray();
char char_b[] = str_b.toCharArray();
char char_p[] = str_p.toCharArray();
//设计返回标志
boolean flag = false;
int f1 = 0;
int f2 = 0;
if(char_a.length+char_b.length != 4 || char_p.length != 4)
{
flag = false;
return flag;
}
// 循环判断
for(int i=0; i<char_a.length; i++)
{
for(int j=0; j<char_p.length; j++)
{
if(char_a[i] == char_p[j])
{
char_p[j] = 'a';
f1++;
break;
}
}
}
for(int i=0; i<char_b.length; i++)
{
for(int j=0; j<char_p.length; j++)
{
if(char_b[i] == char_p[j])
{
char_p[j] = 'a';
f2++;
break;
}
}
}
if(f1 == char_a.length && f2 == char_b.length)
flag = true;
return flag;
}
}