UVA 725 Division(暴力枚舉 簡單)

UVA 725 Division

題意

輸入n,輸出滿足abcde/fghij=n的表達式(從小到大),其中a~j是0~9的一個排列

解決

  1. 枚舉fghij,算出abcde,然後判斷一下0~9的數字有沒有被無重複的用完
  2. 就是注意一下,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);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章