几道竞赛题,请用java做出来,求教!
1.下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。
赛软件 * 比赛 = 软件比拼
试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。
2.计算24是流行的扑克游戏。其方法是任意取出4张牌,A J Q K 王牌 算 1,其它牌按点数计算,花色不计。目标是通过加、减、乘、除和括号最终算出24。设计一个程序,输入4个数字(1~10),则列出所有可能计算结果为24的方案。要求:
方案不能重复(加法乘法交换律等算不同方案)。
计算中局部可以为分数,结果为整数即可(如 3 3 7 7 算法: (3 + 3/7)*7)
如果没有找到方案输出:无解。
[解决办法]
//赛软件 * 比赛 = 软件比拼public class Test2 { public static void main(String args[]) { int a,b,c,d,e,f; //a代表赛, b代表软, c代表件, d代表 比, e代表比, f代表拼 for(a=1;a<=9;a++) { for(b=1;b<=9;b++) { for(c=1;c<=9;c++) { for(d=1;d<=9;d++) { for(e=1;e<=9;e++) { for(f=1;f<=9;f++) { int n1 = a*100+b*10+c; int n2 = d*10+a; int n3 = b*1000+c*100+e*10+f; if(n3 == n1*n2) { System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f); System.out.println("n1="+n1+" n2="+n2+" n3="+n3); } } } } } } } }}
[解决办法]
第二个我个人感觉有点难 我想想再说吧~~~
[解决办法]
第一题 [100~999] * [10~99] = ???? 算出所有不超过四位数的结果,然后枚举。141559103
[解决办法]
没看清 不考虑0, [100~999] * [10~99] = ???? 算出所有不超过四位数的结果,筛选出不含0的,然后枚举。算法复杂度不高嘛
[解决办法]
第二题 依旧是枚举啊,估计你做的是枚举的专题,自己多想想吧
[解决办法]
public class Test
{
public static void main(String[] args)
{
/**
*abc*da=bcde
*若找到满足这样的等式的数,就将其输出
*/
int m1,m2,m3;
int x1,x2,x3,x4;
for(int a=1;a<=9;a++)
{
for(int b=1;b<=9;b++)
{
for(int c=1;c<=9;c++)
{
for(int d=1;d<=9;d++)
{
m1=a*100+b*10+c;
m2=d*10+a;
m3=m1*m2;
x1=m3%10;
x2=m3/10%10;
x3=m3/100%10;
x4=m3/1000;
if(x4==b&&x3==c&&x2==d)
{
System.out.println(m1+"*"+m2+"="+m3);
}
}
}
}
}
}
}
[解决办法]