Oscar111111 @ 2024-07-19 14:34:59
#include<bits/stdc++.h>
using namespace std;
int d[10];
bool is=false;
bool x(int a,int b,int c){
int n;
n=1;
while(a){
d[n]=a%10;
a/=10;
n++;
}
while(b){
d[n]=b%10;
b/=10;
n++;
}
while(c){
d[n]=c%10;
c/=10;
n++;
}
sort(d+1,d+10);
for(int i=1;i<=9;i++)
if(d[i]!=i) return false;
return true;
}
int main()
{
int a,b,c;
cin>>a>>b>>c;
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
for(int k=1;k<=9;k++)
if(x((i*100+j*10+k)*a,(i*100+j*10+k)*b,(i*100+j*10+k)*c)){
is=true;
cout<<i*100+j*10+k<<" "<<(i*100+j*10+k)*2<<" "<<(i*100+j*10+k)*3<<endl;
}
}
}
if(!is) cout<<"No!!!";
return 0;
}
输出样例时有一个"No!!!"
by JackyLi @ 2024-07-25 14:49:07
@Oscar111111
#include<bits/stdc++.h>
using namespace std;
bool f[100],numf[11000];
bool ntsd(int a,int b,int c){//不同数位(Not the same digits)+大小+是否重复的判断
if(a<100||b<100||c<100||a>999||b>999||c>999||!numf[a]||!numf[b]||!numf[c]) return false;
memset(f,true,sizeof(f));
//a
while(a!=0){
int tmp=a%10;
if(f[tmp]==true&&tmp!=0){
f[tmp]=false;
}
else{
return false;
}
a/=10;
}
//b
while(b!=0){
int tmp=b%10;
if(f[tmp]&&tmp!=0){
f[tmp]=false;
}
else{
return false;
}
b/=10;
}
//c
while(c!=0){
int tmp=c%10;
if(f[tmp]&&tmp!=0){
f[tmp]=false;
}
else{
return false;
}
c/=10;
}
numf[a]=false;
numf[b]=false;
numf[c]=false;
return true;
}
int main()
{
memset(numf,true,sizeof(numf));
int a,b,c;
bool f=true;
cin>>a>>b>>c;
if(a==0||b==0||c==0){//特判
cout<<"No!!!";
return 0;
}
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
for(int k=1;k<=9;k++){
//遍历出每一个数
int num=i*100+j*10+k;//每个数字
if(num%a==0&&ntsd(num,num/a*b,num/a*c)){//按比分配+ 不同数位(Not the same digits)+大小+是否重复的判断
f=false;//打标记
cout<<num<<" "<<num/a*b<<" "<<num/a*c<<endl;//输出
}
}
}
}
if(f) cout<<"No!!!";//如果没有符合的就输出“No!!!”
return 0;
}
by JackyLi @ 2024-07-25 14:58:52
@Oscar111111 应该这样写就能AC了,记得不要光抄,要理解代码,我特意把注释写上了。有不懂的记得问我。
by JackyLi @ 2024-07-25 15:04:26
备注:我改了好久
by Oscar111111 @ 2024-08-03 11:38:38
我还没AC呢