这道题做了两个小时,终于搞定,这道题吧,主要控制除数的范围(我用的范围是1000到99999,然后又分1000到9999和10000到99999两种情况讨论,个人感觉好麻烦),然后用输入的数和除数相乘求出第一个数,最后注意输出格式(我在这个地方改了差不多一个小时,坑死我了
);
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int pp(int a,int b,int s[11])
{
int q=0;
for(int i=0;;i++){
s[i]=a%10;a=a/10;q++;
if(a==0) break;
}
for(int i=q;;i++){
s[i]=b%10;b=b/10;
if(b==0) break;
}
}
int main()
{
int n,m=0;
while(cin>>n&&n>=2&&n<=79&&n!=0){
int q=1;
if (m>0) printf("\n");m++;
for(int i=1000;i<99999;i++){
if(i<=9999){
int flag=1; int pro=i*n;
if(pro>10000&&pro<99999){
int s[9]; pp(pro,i,s);sort(s,s+9);
for(int j=0;j<9;j++){
if(s[j]!=j+1) flag=0;
}
if(flag==1) {q=0;cout<<pro<<" / "<<0<<i<<" = "<<n<<endl;}
}
}
else if(i>10000){
int flag=1; int pro=i*n;
if(pro>10000&&pro<99999){
int s[10]; pp(pro,i,s);sort(s,s+10);
for(int j=0;j<10;j++){
if(s[j]!=j) flag=0;
}
if(flag==1) {q=0;cout<<pro<<" / "<<i<<" = "<<n<<endl;}
}
}
}
if(q==1){
cout<<"There are no solutions for "<<n<<"."<<endl;
}
}
return 0;
}