相对于上一个题那么巧妙的循环,这个题思考起来就简单多了。直接暴力模拟就行了,值得注意的是里面用到的几个函数,放在文章最后。
#include <bits/stdc++.h>
using namespace std;
int main() {
int cnt=0;
char s[20],buf[99];
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++)
if (strchr(s,buf[i])==NULL) {
ok=0;
break;
}
if (ok) {
printf("<%d>\n",++cnt);
printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n",abc,de,x,y,z);
}
}
printf("The number of solutions =%d\n",cnt);
return 0;
}