豎式問題

問題描述:

找出形如 abc*de (三位數乘以兩位數) 的算式,使得在完整的豎式中,所有數字屬於一個特定的數字集合。輸入數字集合 (相鄰數字之間沒有空格),輸出所有豎式。每個豎式前應有編號,之後應有一個空行。最後輸出解的總數。

樣例輸入:

2357

樣例輸出:

<1>

…775

X…33


.2325


25575

The number of solutions = 1

題解

輸入2357這相當於一個集合{2, 3, 5, 7}

             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;  
}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章