题目大意为输入一个数n,用0~9组成任意的数字使其整除的结果为n,可以存在前导0。
题解:直接暴力就可以,求出第一个数,使其对n取余为0,在整除n求出第二个数,把数存进a数组里面,用judge数组判断是否出现重复数字。
#include <stdio.h>
#include <string.h>
int a[10];
int main(){
int n,num,judge[10],index = 0;
while(~scanf("%d",&n) && n){
int flag = 0;
if(index)
putchar('\n');
for(a[0] = 1; a[0] <= 9; a[0] ++)
for(a[1] = 0; a[1] <= 9; a[1] ++)
for(a[2] = 0; a[2] <= 9 ; a[2] ++)
for(a[3] = 0; a[3] <= 9 ; a[3] ++)
for(a[4] = 0; a[4] <= 9; a[4] ++){
num = a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4];
for(int i = 5; i <= 9; i ++)
a[i] = 0;
if(num % n == 0){
int temp = num / n;
int i = 5;
while(temp){
a[i++] = temp % 10;
temp /= 10;
}
memset(judge,0,sizeof(judge));
int ans = 0;
for(i = 0; i <= 9; i ++){
if(judge[a[i]] == 0)
judge[a[i]] = 1;
else
break;
}
if(i <= 9)
ans = 1;
if(!ans){
flag = 1;
printf("%d / %d%d%d%d%d = %d\n",num,a[9],a[8],a[7],a[6],a[5],n);
}
}
}
if(!flag)
printf("There are no solutions for %d.\n",n);
++ index;
}
return 0;
}