竖式问题
找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。
输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。
样例输入:
2357
样例输出:
<1>
775
x 33
------
2325
2325
------
25575
The number of solutions = 1
package book;
import java.util.Scanner;
/**
* 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。
* 输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。
* 样例输入:
* 2357
*
* 样例输出:
* <1>
* 775
* x 33
* ------
* 2325
* 2325
* ------
* 25575
*
* The number of solutions = 1
* @author Administrator
*
*/
public class B3a2 {
public static void main(String[] args) {
int abc,de,x,y,z,count=0;
Scanner sc = new Scanner(System.in);
String s = sc.next();
String buf;
boolean flag=true;
for( abc=100;abc<=999;abc++){
for(de=10;de<=99;de++){
x=abc*(de%10);
y=abc*(de/10);
z=abc*de;
buf = ""+abc+de+x+y+z;
flag=true;
for(int i=0;i<buf.length();i++){
if(!s.contains(buf.charAt(i)+"")){
flag=false;
}
}
if(flag){ //%5d表示按照5位打印,不足5位前面补0
System.out.printf("<%d>\n",++count);
System.out.printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n",abc,de,x,y,z);
}
}
}
System.out.println("The number of solutions = "+count);
}
}