UVa 725 - Division 发表于 2014-11-26 | 分类于 AOAPC II , Chapter 07. Brute Force | 水12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include<iostream>#include<cstdio>#include<set>using namespace std;set<int>num[7];int n,cnt,x,y[7];bool z;void judge(){ x=n*y[1]; if(x>98765){ z=true; return; } num[1].insert(x/10000); num[1].insert(x%10000/1000); num[1].insert(x%1000/100); num[1].insert(x%100/10); num[1].insert(x%10); if(num[1].size()==10){ printf("%05d / %05d = %d\n",x,y[1],n); cnt++; } num[1].clear(); return;}void find(int k){ for(int i=0;i<10;i++){ y[k]=y[k+1]; num[k]=num[k+1]; while(num[k].find(i)!=num[k].end()&&i<9) i++; if(num[k].find(i)==num[k].end()){ y[k]*=10; y[k]+=i; num[k].insert(i); if(k-1) find(k-1); else judge(); if(z) return; } } return;}int main(){ int t=0; while(cin>>n&&n){ cnt=0; z=false; if(t++) cout<<endl; find(5); if(!cnt) cout<<"There are no solutions for "<<n<<"."<<endl; } return 0;}本文迁移自我的 CSDN博客 ,格式可能有所偏差。