题目链接:Division

思路:

枚举被除数和除数,其实每次只要枚举除数或者被除数其中一个,在知道两个值后就可以知道第三个值,然后再判断能否采用

代码:

#include<stdio.h>
int number[15];
int check(int a, int b) 
{
    if (a > 98765) return 0;  
    for (int i = 0; i < 10; i++) 
    { 
        number[i] = 0;  
    }
    if (b < 10000) number[0] = 1;  
    while (a) 
    {  
        number[a % 10] = 1;  
        a /= 10;  
    }  
    while ( b ) 
    {  
        number[b % 10] = 1;  
        b /= 10;  
    }  
    int sum = 0;  
    for (int i = 0; i < 10; i++)  
        sum += number[i];  
    return sum == 10;  
}
int main() 
{
    int ans, cnt = 0;
    while (scanf("%d", &ans) == 1, ans) 
    {
        if (cnt++) printf("\n");
        int flag = 0;
        for (int i = 1234; i < 99999; i++) 
        {
            if (check(i * ans, i)) 
            {
                printf("%05d / %05d = %d\n", i * ans, i, ans);
                flag = 1;
            }
        }
        if (!flag) 
        {
            printf("There are no solutions for %d.\n",ans);
        }
    }
    return 0;
}