要点:
用0~9编成两个五位数,要求两个数中每个数字只出现一次,第二个数中可以有前导0
要点:
用第二个数直接暴力枚举就可以
#include#include 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;}