您的位置:首页 > 编程语言 > Java开发

第五届蓝桥杯A组java—神器算式

2017-03-28 23:56 232 查看
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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: