题目描述 找出所有形如 abc∗de (三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出。 输入 输入包含多组测试用例。 对于每组测试用例,输入一个字符串s,代表数字集合。 输出 输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。(竖式按照3位数的大小从小到大输出~) 样例输入 2357 样例输出
775
X 33
-----
2325
2325
-----
25575
The number of solutions: 1
题解代码如下
#include
using namespace std;
char s[20]; ///存储字符串
bool st[10]; ///标记访问数组
bool judge(int x){
while(x){
if(!st[x%10]) return false;
x /= 10;
}
return true;
}
int main(){
while(scanf("%s",s) != EOF){
memset(st,0,sizeof st);
int len = strlen(s),id = 0;
for(int i=0;i ///枚举两位数
int tmp1 = x * (y%10); ///三位数乘以两位数的个位
int tmp2 = x * (y/10); ///三位数乘以两位数的十位
int tmp3 = x * y; ///存储结果
if(judge(x)&&judge(y)&&judge(tmp1)&&judge(tmp2)&&judge(tmp3)){
printf("\n",++id);
printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n",x,y,tmp1,tmp2,tmp3);
}
}
}
printf("The number of solutions: %d\n",1);
}
}
|