您的位置:首页 > 其它

暴力法求解——简单枚举(除法)

2014-03-14 21:23 267 查看
题:

输入正整数n,按从小到大的顺序输出所有形如abcde/fghij = n的表达式,其中a~j恰好为数字0~9的一个排列,2<=n<=79。

样例输入:

62

样例输出:

79546/01283 = 62

94736/01528 = 62

#include<stdio.h>
#include<string.h>

int main()
{
int i, p, n, k, j, h, key = 1;
char str1[5], str2[5];
scanf("%d", &n);
for(h = 12345; h < 98766; h++) if(h%n == 0)//从小到大枚举abcde,并特判一下能否整除n
{
sprintf(str2, "%05d", h);//将int型转换成字符串
k = 0;
for(i = 0; i < 4; i++)//判断是否符合abcde类型
for(j = i + 1; j < 5; j++)
if(str2[j] == str2[i])
k = 1;
if(k) continue;//不符合继续枚举下一组
p = h/n;
sprintf(str1, "%05d", p);//同理判断fghij
k = 0;
for(i = 0; i < 4; i++)
for(j = i + 1; j < 5; j++)
if(str1[j] == str1[i])
k = 1;
if(k) continue;
for(i = 0; i < 5; i++)//判断abcde与fghij是否符合条件(互不相同)
for(j = 0; j < 5; j++)
if(str1[j] == str2[i])
k = 1;
if(k) continue;
printf("%05d/%05d = %d\n", h, p, n);
key = 0;
}
if(key) printf("ERROR!\n");//输入数据有误,无解
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: