暴力法枚举,五重循环。
一开始因为空格问题WA了,要注意
#include <iostream>
#include <set>
#include <cstdio>
using namespace std;
int main(){
int a,b,c,d,e,f,g,h,i,j,n;
int cnt = 0;
int div = 0,res;
set<int> num;
while(cin >> n && n!=0){
if(cnt++) cout<<"\n";
bool ans = false;
for(f=0;f<10;f++){
for(g=0;g<10;g++){
if(g==f) continue;
for(h=0;h<10;h++){
if(h==f || h==g) continue;
for(i=0;i<10;i++){
if(i==f || i==g || i==h) continue;
for(j=0;j<10;j++){
if(j==f || j==g || j==h || j==i) continue;
div = f*10000 + g*1000 + h*100 + i*10 +j;
num.clear();
num.insert(f);num.insert(j);num.insert(g);num.insert(h);num.insert(i);
res = n*div;int t =res;int cnt = 0;
bool flag = true;
while(res){
if(num.count(res%10)){flag=false;break;}
num.insert(res%10);
res/=10;
cnt ++;
}
if(!flag||cnt!=5) continue;
else {printf("%d / %d%d%d%d%d = %d\n",t,f,g,h,i,j,n);ans=true;}
}
}
}
}
}
if(!ans) printf("There are no solutions for %d.\n",n);
//cout<<endl;
}
return 0;
}