uva 725 简单枚举

来源:互联网 发布:国外户外品牌 知乎 编辑:程序博客网 时间:2024/06/05 23:00

题目大意

按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a-j卡位数字0-9的一个排列,含前导0.


解题思路

除数,被除数都是5位数,把fghij从1234开始枚举一直到98765,那么abcde就是它乘以n,每一组输出间加一个换行。


#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <vector>#include <cmath>#include <set>#include <map>using namespace std;bool vis[11];bool judge(int a,int b){    if(b>98765) return false;    memset(vis,false,sizeof(vis));    for(int i=0;i<5;i++)    {        int t=a%10;        a/=10;        if(vis[t]) return false;        vis[t]=true;        t=b%10;        b/=10;        if(vis[t]) return false;        vis[t]=true;    }    return true;}int main(){    int t;    int k=0;    while(scanf("%d",&t)&&t)    {        int cnt=0;        if(k++) printf("\n");        for(int i=1234;i<=98765;i++)        {            if(judge(i,i*t))            {                cnt++;                printf("%05d / %05d = %d\n",i*t,i,t);            }        }        if(cnt==0)        {            printf("There are no solutions for %d.\n",t);        }    }    return 0;}


0 0
原创粉丝点击