找出所有形如abc*de的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。
#include "iostream"
#include "vector"
#include "string.h"
#include "set"
#include "ctype.h"
#include "stdio.h"
using namespace std;
int main()
{
char s[100];
cout << "输入数字集合:";
cin >> s;
int abc, de;
int x, y, z, i, ok, count = 0;
char buf[100];
for(abc=111; abc<=999; abc++)
for(de=11; de<=99; de++)
{
ok = 1;
x = abc * (de%10);
y = abc * (de/10);
z = abc * de;
sprintf(buf, "%d%d%d%d%d", abc, de, x, y, z);
for(i=0; i<strlen(buf); i++)
if(strchr(s, buf[i]) == NULL)
{
ok = 0;
break;
}
if(ok)
{
count++;
printf("\n<%d>\n", count);
printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%d\n", abc, de, x, y, z);
}
}
cout << "The number of solutions = " << count << endl;
return 0;
}