基本思路:
注意strchr和sprintf的用法;
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s[100];
char buff[100];
int cnt=0;
scanf("%s",s);
int x,y,z;
for(int i=111;i<=999;i++)
{
for(int j=11;j<=99;j++)
{
x=i*(j%10),y=i*(j/10),z=i*j;
sprintf(buff,"%d%d%d%d%d",i,j,x,y,z);//第一个参数一般是字符串,第二个参数是一个格式字符串,与后面的参数类型注意匹配,然后sprintf的作用就是把这些参数改为字符型;
int ok=1;
int l=strlen(buff);
for(int k=0;k<l;k++)
if(strchr(s,buff[k])==NULL) ok=0;//strchr的作用:在第一个字符型数组中寻找第二个参数即某个字符,然后如果找不到就返回NULL找到就返回地址;
if(ok) printf("<%d>\n%5d\nX%4d\n-----\n%5d\n%-5d\n-----\n%5d\n\n",++cnt,i,j,x,y,z);
}
}
printf("The number of solutions = %d\n",cnt);
return 0;
}