/*
题目描述
找出所有形如abc*dc(三位数乘以两位数)的算式,使得在完整的竖式中,
所有数字都属于一个特定的数字集合。
例如,当该数字集合为2357时,只有一个竖式满足条件,
该竖式中出现的所有数字都属于集合2357,该竖式为(*表示空格):
**775
X**33
-----
*2325
2325*
-----
25575
输入
输入包括多行数据,每行一个正整数,表示该数字集合
输出
对每行输入,输出一个整数,即满足条件的竖式个数,然后输出换行
样例输入
2357
样例输出
1
*/
代码如下:
1 #include<stdio.h> 2 #include<string.h> 3 char x[20]; 4 int c,c1,c2; 5 int abc,de; 6 char str[100]; 7 int isok() 8 { 9 int flag; 10 sprintf(x,"%d%d%d%d%d",abc,de,c1,c2,c); 11 flag=1; 12 for(int i=0;i<strlen(x);i++) 13 { 14 if(strchr(str,x[i])==NULL) flag=0; 15 } 16 if(flag==1) return 1; 17 else return 0; 18 } 19 int main() 20 { 21 22 while(scanf("%s",str)!=EOF) 23 { 24 int k=0; 25 int flag; 26 for(abc=100;abc<=999;abc++) 27 { 28 for(de=10;de<=99;de++) 29 { 30 c1=abc*(de%10); 31 c2=abc*(de/10); 32 c=abc*de; 33 if(isok()) k++; 34 } 35 } 36 printf("%d ",k); 37 } 38 }