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

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;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值