除法Uva 725
为了保证a,b,c,d,e,f,g,h,i,j全都不一样可以有序化后,与0~9的数进行比较如果,结果为10,证明10个数各异。
此处最大的5位数位不重复的数为98765,最小的是01234。
#include<cstdio>
#include<algorithm>
using namespace std;
int b[10];
int test(int m, int n)
{
int z = 0;
if (m > 98765) return 0;
b[0] = m / 10000;//将参数值的个十百千万位数值传递存于数组b
b[1] = m / 1000 % 10;
b[2] = m / 100 % 10;
b[3] = m / 10 % 10;
b[4] = m % 10;
b[5] = n / 10000;
b[6] = n / 1000 % 10;
b[7] = n / 100 % 10;
b[8] = n / 10 % 10;
b[9] = n % 10;
sort(b, b + 10);//数组b进行排序
for (int j = 0; j < 10; j++)//判断参数值个十百千万位是否符合要求
if (b[j] == j) z++;
if (z == 10) return z;//判断参数值是否由0~9构成且不重复
else return 0;
}
int main()
{
int N, i, cnt = 0, count;
while (scanf_s("%d", &N) && N >= 2 && N <= 79)
{
count = 0;
if (cnt++) printf("\n");//格式控制
for (i = 1234; i <= 98765; i++)
if (test(i * N, i))//测试数据是否符合要求
{
printf("%05d / %05d = %d\n", i * N, i, N);//保证5位数据位宽,不足补0
++count;
}
if (count == 0)//判断能否产生符合要求的数据
printf("There are no solutions for %d.\n", N);
}
return 0;
}