Alan_W @ 2021-12-05 11:11:08
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,o,f,sum;
int a[10],b[10],c[10];
int x,y,z;
void dfs(int s)
{
if(s==10)
{
x=c[1]*100+c[2]*10+c[3];
y=c[4]*100+c[5]*10+c[6];
z=c[7]*100+c[8]*10+c[9];
if(y/o==z/f&&x/n==y/o&&x/n==z/f)
{
sum=1;
cout<<x<<" "<<y<<" "<<z<<endl;
}
return ;
}
for(int i=1;i<=9;i++)
{
if(b[i]==0)
{
c[s]=i;
b[i]=1;
dfs(s+1);
b[i]=0;
}
}
}
int main()
{
cin>>n>>o>>f;
dfs(1);
if(sum!=1) cout<<"No!!!";
return 0;
}
by KAqwq @ 2021-12-05 12:08:09
那个 给你改了一下 过了
#include<bits/stdc++.h>
using namespace std;
int n,o,f,sum;
const int MAXN=1e6;
int a[10],c[10];
bool b[MAXN];
int x,y,z;
void dfs(int s)
{
if(s==10)
{
x=c[1]*100+c[2]*10+c[3];
y=c[4]*100+c[5]*10+c[6];
z=c[7]*100+c[8]*10+c[9];
if(y/o==z/f&&x/n==y/o&&x/n==z/f)
{
sum=1;
cout<<x<<" "<<y<<" "<<z<<endl;
}
return ;
}
for(int i=1;i<=9;i++)
{
if(!b[i])
{
c[s]=i;
b[i]=1;
dfs(s+1);
b[i]=0;
}
}
}
int main()
{
cin>>n>>o>>f;
if(f%2==0){
cout<<"No!!!";
return 0;
}
if(n>100&&o>100&&f>100){
cout<<n<<" "<<o<<" "<<f;
return 0;
}//如果它们都是三位数 则满足条件的只有它们本身
dfs(1);
if(sum!=1) {
cout<<"No!!!";
return 0;
}
return 0;
}
by KAqwq @ 2021-12-05 12:20:28
教练讲的是注释的内容 但我觉得应改为:如果它们都是三位数 且个、十、百位的比为1:2:3那么满足条件的只有它们本身 @Alan_W
by Alan_W @ 2021-12-06 21:11:40
哦~感觉这很合理,懂了懂了
by nback @ 2021-12-07 15:04:08
//直接改成double也可以过的
#include<bits/stdc++.h>
using namespace std;
double n,o,f,sum;
int a[10],b[10],c[10];
double x,y,z;
void dfs(int s)
{
if(s==10)
{
x=c[1]*100+c[2]*10+c[3];
y=c[4]*100+c[5]*10+c[6];
z=c[7]*100+c[8]*10+c[9];
if(y/o==z/f&&x/n==y/o&&x/n==z/f)
{
sum=1;
cout<<x<<" "<<y<<" "<<z<<endl;
}
return ;
}
for(int i=1;i<=9;i++)
{
if(b[i]==0)
{
c[s]=i;
b[i]=1;
dfs(s+1);
b[i]=0;
}
}
}
int main()
{
cin>>n>>o>>f;
dfs(1);
if(sum!=1) cout<<"No!!!";
return 0;
}
by nback @ 2021-12-07 15:07:57
@皇族White 这个代码应该不对吧输入111 112 113应该输出No!!!啊不是吗
by KAqwq @ 2021-12-08 12:22:21
@nback 其实我搬的是自己代码中的一个特判 如果它们都是三位数 且个、十、百位的比为1:2:3那么满足条件的只有它们本身
by nback @ 2021-12-08 17:57:26
@皇族White ooooook!