UVA-725 Division

335 阅读1分钟

简单枚举#除法

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;

int main() {
	ll x,p=0;
	while(cin>>x,x) {
		if(p)//控制换行 
			printf("\n");
		int flag=1;
		for(int a=1234; a<=98765; a++) {
			ll b=a*x;
			if(b>98765)
				break;
			int s[10]= {0},sum=0;
			s[a/10000]=1,s[a/1000%10]=1,s[a/100%10]=1,s[a/10%10]=1,s[a%10]=1,
			s[b/10000]=1,s[b/1000%10]=1,s[b/100%10]=1,s[b/10%10]=1,s[b%10]=1;
			for(int i=0; i<=9; i++)
				sum+=s[i];
			if(sum==10) {//sum=10表示从09 各出现一次 
				printf("%lld / %05lld = %lld\n",b,a,x);
				flag=0;
			}
		}
		if(flag==1)
			printf("There are no solutions for %lld.\n",x);
		p=1;
	}
	return 0;
}