找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但所写程序中应该输出空格,而非小数点)。
样例输入:
2357
样例输出:
<1>
..775
X..33
-----
.2325
2325.
-----
25575
The number of solutions = 1
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
char input[100];
char str[100];
int count = 0;
int main() {
cin >> input;
for(int i = 100; i < 1000; i++)
for(int j = 10; j < 100; j++){
sprintf(str, "%d%d%d%d%d", i, j, i*(j%10), i*(j/10), i*j);
int ok = 1;
for(int k = 0; k < strlen(str); k++)
if(strchr(input, str[k]) == NULL) ok = 0;
if(ok){
printf("<%d>\n", ++count);
printf("%5d\nX%4d\n", i, j);
printf("-----\n");
printf("%5d\n%4d \n", i*(j%10), i*(j/10));
printf("-----\n");
printf("%5d\n\n", i*j);
}
}
printf("The number of solutions = %d", count);
return 0;
}