您的位置:首页 > 其它

UVA 725 Division(暴力枚举 简单)

2017-08-19 18:19 429 查看

UVA 725 Division

题意

输入n,输出满足abcde/fghij=n的表达式(从小到大),其中a~j是0~9的一个排列

解决

枚举fghij,算出abcde,然后判断一下0~9的数字有没有被无重复的用完

就是注意一下,0~9的每一个数字都要用到

int used[10];
bool judge(int a,int b)
{
if(b>98765) return false;
memset(used,0,sizeof(used));
if(a<10000) used[0]=1;      //形如0xxxx的数字中,0已经被使用
while(a)
{
used[a%10]++;
a/=10;
}
while(b)
{
used[b%10]++;
b/=10;
}
int sum=0;
rep(i,0,10) if(used[i]>1||used[i]==0) return false;
return true;
}

int main()
{
//open();
//out();
int n,cases=0;
while(1)
{
scanf("%d",&n);
if(!n) break;
if(cases++) printf("\n");
int cnt=0;
rep(i,1234,100000){             //枚举fghij,算出abcde,然后judge一下
if(judge(i,i*n)){           //i是除数,i*n是被除数
printf("%05d / %05d = %d\n",i*n,i,n);
cnt++;
}
}
if(!cnt) printf("There are no solutions for %d.\n",n);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva 暴力 算法 枚举