找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。
样例输入:
2357
样例输出:
<1>
..775
X..33
-----
.2325
2325.
-----
25575
The number of solutions = 1
#include<stdio.h> #include<string.h> int main() { char s[20],buf[99];//用于接受输入数字串 int a,b,c,Count = 0; scanf("%s",s);//注意此处不需要取地址& for(int i=111;i<=999;i++)//遍历所有的三位数 { for(int j=11;j<=99;j++)//遍历所有的两位数 { a = i*(j%10);//上面的乘数 b = i*(j/10);//下面的乘数 c = i*j;//结果 //进行是否满足要求的判断 sprintf(buf,"%d%d%d%d%d",i,j,a,b,c);//将整型数存入字符数组buf //便于进行判断 int ok = 1; for(int k=0;k<strlen(buf);k++) if(strchr(s,buf[k])==NULL) ok = 0; if(ok) { Count++; printf("<%d>\n",Count); printf("%5d\nx%4d\n-----\n%5d\n%4d\n-----\n%5d\n",i,j,a,b,c); } } } printf("The number of the solutions = %d",Count); return 0; }