要点:
用0~9编成两个五位数,要求两个数中每个数字只出现一次,第二个数中可以有前导0
要点:
用第二个数直接暴力枚举就可以
#include<stdio.h>
#include<string.h>
int num[10];int judge(int a,int b)
{memset(num, 0, sizeof(num));if (b > 98765) return 0;if (a < 10000)num[0] = 1;while (a){num[a%10]=1;a /= 10;}while (b){num[b % 10]=1;b /= 10;}int sum = 0;for (int i = 0; i < 10; i++)sum += num[i];return (sum == 10);
}
int main()
{int n,i,count=0;while (scanf("%d", &n), n){bool flag = false;if (count++)printf("\n");for (i = 1234; i <50000; i++){if (judge(i, n*i)){printf("%05d / %05d = %d\n", i*n, i, n);//格式要求这中间有空格flag = true;}}if (!flag)printf("There are no solutions for %d.\n", n);}return 0;
}