下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。 赛软件 * 比赛 = 软件比拼
试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。
请给出代码,顺便提醒一下各位··请务必写一下思路··我用最笨的方法依次遍历的时候是出不了结果的··
试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。
请给出代码,顺便提醒一下各位··请务必写一下思路··我用最笨的方法依次遍历的时候是出不了结果的··
public class Test {
public static void main(String[] args) {
int i,j,tmp,count=0;
for(i=302;i<999;i++){
if(i%10==1) continue;
for(j=12;j<99;j++){
if(j%10==1) continue;
tmp=i*j;
if(tmp<9999){
if(test(new Node(i),new Node(j),new Node(tmp)))
System.out.println(i+" * "+j+"="+tmp);
}
}
}
}
public static boolean test(Node srj,Node bs,Node rjbp){
return srj.getA()==bs.getC() && srj.getb()==rjbp.getD()
&& srj.getC()==rjbp.getA() && bs.getb()==rjbp.getb()
;
}
private static class Node {
private int a;
private int b;
private int c;
private int d;
private int num;
public int getD(){
return num/1000;
}
public int getA() {
if(num<100){
return 0;
}else if(num>100 && num<1000){
return num/100;
}else{
return num/100%10;
}
}
public int getb() {
return num/10%10;
}
public int getC(){
return num %10;
}
public Node(int num){
this.num=num;
}
public int getNum(){
return num;
}
}
}
465 * 14=6510
int i,j;
count=0;
for(i=100;i<10000;i++)
{
a=i/100;
b=i%100/10;
c=i%10;
for(j=10;j<100;j++)
{
e=j/10;
f=j%10;
if(a==f)
{
value=i*j;
x=value/1000;
y=value%1000/100;
z=value%100/10;
if(x==b && y==c && z==e)
{
printf("sairuanjian=%d,bisai=%d\n",i,j);
count++;
}
}
}
}
if(count==0)
printf("cant find a numbers!\n");
return 0;
465*14=6510!!!!!!!!!!!!!