例3-3 竖式问题

问题描述:找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。
    样例输入:2357
    样例输出
    <1>
    ..775
    X..33
    -----
    .2325
    2325.
    -----
    25575

 

代码如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 
 5 int main(void)
 6 {
 7     int i, ok, abc, de, x, y, z, count = 0;
 8     char s[20], buf[99];
 9 
10     scanf("%s", s);
11     for (abc = 111; abc <= 999; abc++)
12     {
13         for (de = 11; de <= 99; de++)
14         {
15             x = abc * (de % 10);
16             y = abc * (de / 10);
17             z = abc * de;
18             sprintf(buf, "%d%d%d%d%d", abc, de, x, y , z);
19             ok = 1;
20             for (i = 0; i < strlen(buf); i++)
21             {
22                 if (strchr(s, buf[i]) == NULL)
23                 {
24                     ok = 0;
25                 }
26             }
27             if (ok)
28             {
29                 printf("<%d>\n", ++count);
30                 printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n", abc, de, x, y, z);
31             }
32         }
33     }
34     printf("The number of solution = %d\n", count);
35     return 0;
36 }
posted on 2014-07-22 15:27  龙潜入海  阅读(63)  评论(0)    收藏  举报