5 条题解

  • 0
    @ 2026-5-31 23:55:41
    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
    	int a,b,c,times=0,i,j,k,i1,i2,i3,j1,j2,j3,k1,k2,k3;
    	cin>>a>>b>>c;
    	for(i=100;i<=999;i++)//设第一个数
    	{
    		j=i*b/a;//根据比例求第二个数
    		k=i*c/a;//根据比例求第三个数
    		if(j<100||j>=1000||k<100||k>=1000) continue;//保证三个数都为三位数
    		i1=i/100;  //
    		i2=i/10%10;//提
    		i3=i%10;   //取
    		j1=j/100;  //每
    		j2=j/10%10;//个
    		j3=j%10;   //数
    		k1=k/100;  //位
    		k2=k/10%10;//的
    		k3=k%10;   //数
    		if(i1==0||i2==0||i3==0||j1==0||j2==0||j3==0||k1==0||k2==0||k3==0) continue;//题目说数字范围为1~9,所以要避免有0的情况
    		int d[10]={0};//记录1~9各出现了几次
    		d[i1]++;
    		d[i2]++;
    		d[i3]++;
    		d[j1]++;
    		d[j2]++;
    		d[j3]++;
    		d[k1]++;
    		d[k2]++;
    		d[k3]++;
    		bool pd=true;
    		for(int l=1;l<=9;l++){//判断是否出现数字重复的情况
    			if(d[l]!=1){
    				pd=false;
    				break;
    			}
    		}
    		if(!pd){//舍去有数字重复的情况
    			continue;
    		}
    		cout<<i<<" "<<j<<" "<<k<<endl;//输出
    		times+=1;
    	}
    	if(times==0){//无解的情况
    		cout<<"No!!!"<<endl;
    	}
    	return 0;//考试不写0鸡蛋
    }
    

    信息

    ID
    899
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    329
    已通过
    90
    上传者