(枚举)算法竞赛入门经典(7.1.1)除法
#include<cstdio> #include<cstdlib> #include<iostream> using namespace std; int n{}, arr[10]{}; void cck(int p,bool *flag) { int sum=p*n, ans=p*n, hd=9; if(sum>98765||sum<1234) return; if(!(sum/10000))hd--; bool flag2[10]; for(int i=0;i<10;i++)flag2[i]=flag[i]; for(int i=hd;i>=5;i--){ arr[i]=sum%10; sum/=10; if(flag2[arr[i]])return; flag2[arr[i]]=1; } printf("%d/%d=%d\n",ans,p,n); } void recursion(int p,int row,bool *flag) { if(row==5){ cck(p,flag); return; } for(int i=0;i<10;i++){ if(!flag[i]){ arr[4-row]=i; flag[i]=1; recursion(p*10+i,row+1,flag); flag[i]=0; } } } int main() { bool flag[10]{}; scanf("%d",&n); recursion(0,0,flag); return 0; }