题意:从00000-99999中选出两个数字,使得这两个数字相除为n 并且,两个数字不得有重复数字。注意:前导0必须有
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int main() 5 { 6 int n; 7 cin>>n; 8 while(1) 9 { 10 if(n==0) break; 11 int f=1; 12 for(int i=1; i<=99999; i++) //笔者在这循环了99999次 (其实可以从54321-98765) 无重复 13 { 14 if(i%n==0) 15 { 16 int j=i/n; 17 if(j>0&&j<=99999) 18 { 19 int flag=1; 20 int A[20]; //数组A用来存放每个位置的数字 21 A[1]=i%10; 22 A[2]=i/10%10; 23 A[3]=i/100%10; 24 A[4]=i/1000%10; 25 A[5]=i/10000; 26 A[6]=j%10; 27 A[7]=j/10%10; 28 A[8]=j/100%10; 29 A[9]=j/1000%10; 30 A[10]=j/10000; 31 for(int k=1; k<=10; k++)//笔者这使用了一个for循环来判断 也可以使用sort进行排序之后判断 32 { 33 for(int j=k+1; j<=10; j++) 34 { 35 if(A[k]==A[j]) 36 { 37 flag=0; 38 39 } 40 } 41 } 42 if(flag) 43 { 44 f=0; 45 if(A[10]==0) 46 { 47 cout<<i<<" / 0"<<j<<" = "<<n<<endl; 48 } 49 else 50 cout<<i<<" / "<<j<<" = "<<n<<endl; 51 52 } 53 } 54 } 55 } 56 if(f==1) 57 { 58 cout<<"There are no solutions for "<<n<<"."<<endl; 59 } 60 cin>>n; 61 if(n==0) break; 62 cout<<" "; 63 } 64 }