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);
}
}