from......http://zhan.renren.com/xiaoyantian?gid=3602888498024774969&checked=true
题目:
找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。
样例输入:2357
样例输出:
<1>
..775
X..33
-----
.2325
2325.
-----
25575
The number of solutions = 1
题意:[code=C/C++][/code]
775 7 ,5在{2, 3, 5, 7}集合中
X 33 3在{2, 3, 5, 7}集合中
-----------------------------------------------------
2325 2,3,5在{2, 3, 5, 7}集合中
2325
------------------------------------------------------
25575 2, 5, 7在{2, 3, 5, 7}集合中
输入一个数,表示这个数组中含有这几个数的元素。
代码:
#include <stdio.h>
#include <string.h>
int main()
{
int abc, de, x, y, z, i, ok, count = 0;
char s[20], buff[100];
scanf("%s", s);
for (abc = 100; abc < 999; abc++)
{
for (de = 10; de < 99; de++)
{
x = abc * (de % 10);
y = abc * (de / 10);
z = abc * de;
sprintf(buff, "%d%d%d%d%d", abc, de, x, y, z);
ok = 1;
for (i = 0; i < strlen(buff); i++)
if (strchr(s, buff[i]) == NULL)
ok = 0;
if (ok)
{
printf("<%d>/n", ++count);
printf("%5d/nX%4d/n-----/n%5d/n%4d/n-----/n%5d/n", abc, de, x, y, z);
}
}
}
printf("The number of solutions = %d/n", count);
return 0;
}