题目:点击打开链接
大意:给你一个数n(2 <= n <= 79),将0-9这十个数字分成两组组成两个5位数a, b(可以包含前导0,如02345也算),使得a / b = n;列出所有的可能答案。
分析:暴力枚举b,然后*n得到a,判断,a,b中是否有重复数字即可
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
bool judge(int a,int b)
{
bool vis[12];
char str[12];
sprintf(str,"%05d%05d",a,b);
memset(vis,0,sizeof(vis));
for(int i=0;i<10;i++){
if(vis[str[i]-'0']) return false;
vis[str[i]-'0']=true;
}
return true;
}
int main()
{
int n,a,b;
int k=0;
while(scanf("%d",&n)&&n){
if(k++) printf("\n");
int flag=1;
for(int i=1234;i<56789;i++){
a=i*n;
if(a<98765&&judge(a,i)){
printf("%05d / %05d = %d\n", a, i, n);
flag=0;
}
}
if(flag) printf("There are no solutions for %d.\n", n);
}
}