例:找出所有形如abc*de(三位数乘以两位数,均非零。)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。 样例输入:2357 样例输出:
<1> ..775 X..33 ----- .2325 2325. ----- 25575 The number of solutions = 1 #include<stdio.h> #include<iostream> using namespace std; #define maxn 20 int a[maxn][maxn]; int main() { int count = 0; char buf[100],s[20]; scanf("%s", s); for (int abc = 111; abc <= 999;abc++) for (int de = 11; de <= 99; de++) { int x = abc*(de % 10), y = abc*(de / 10), z = abc*de; sprintf(buf, "%d%d%d%d%d", abc, de, x, y, z); int ok = 1; // 设置标志量,查找失败则重置标志量 for (int i = 0; i < strlen(buf);i++) //strlen返回结束标记之前字符的个数 if (strchr(s, buf[i]) == NULL) ok = 0;//查找字符是否属于某个字符串集合 if (ok) { printf("<%d>\n", count); printf("]\nXM\n-----\n]\nM\n-----\n]\n\n", abc, de, x, y, z); } } return 0; }