题目描述
找出所有形如abc*dc(三位数乘以两位数)的算式,使得在完整的竖式中,
所有数字都属于一个特定的数字集合。
例如,当该数字集合为2357时,只有一个竖式满足条件,
该竖式中出现的所有数字都属于集合2357,该竖式为(*表示空格):
**775
X**33
-----
*2325
2325*
-----
25575
输入
输入包括多行数据,每行一个正整数,表示该数字集合
输出
对每行输入,输出一个整数,即满足条件的竖式个数,然后输出换行
样例输入
2357
样例输出
找出所有形如abc*dc(三位数乘以两位数)的算式,使得在完整的竖式中,
所有数字都属于一个特定的数字集合。
例如,当该数字集合为2357时,只有一个竖式满足条件,
该竖式中出现的所有数字都属于集合2357,该竖式为(*表示空格):
**775
X**33
-----
*2325
2325*
-----
25575
输入
输入包括多行数据,每行一个正整数,表示该数字集合
输出
对每行输入,输出一个整数,即满足条件的竖式个数,然后输出换行
样例输入
2357
样例输出
1
代码如下:
#include<stdio.h>
#include<string.h>
char x[20];
int c,c1,c2;
int abc,de;
char str[100];
int isok()
{
int flag;
sprintf(x,"%d%d%d%d%d",abc,de,c1,c2,c);
flag=1;
for(int i=0;i<strlen(x);i++)
{
if(strchr(str,x[i])==NULL) flag=0;
}
if(flag==1) return 1;
else return 0;
}
int main()
{
while(scanf("%s",str)!=EOF)
{
int k=0;
int flag;
for(abc=100;abc<=999;abc++)
{
for(de=10;de<=99;de++)
{
c1=abc*(de%10);
c2=abc*(de/10);
c=abc*de;
if(isok()) k++;
}
}
printf("%d\n",k);
}
}