top1编程
← 返回题目
题解

三连击

1 条题解

  • 0
    @ 2026-7-29 1:15:58
    #include<bits/stdc++.h>
    using namespace std;
    bool f(int c){ 
    	int t[10]={};
    	t[c%10]++;
    	t[c/10%10]++;
    	t[c/100%10]++;
    	t[2*c%10]++;
    	t[2*c/10%10]++;
    	t[2*c/100%10]++;
    	t[3*c%10]++;
    	t[3*c/10%10]++;
    	t[3*c/100%10]++;
    	//保证生成的三个数都是从1~9中取的,且每个数只能取一次
    	for(int i=1;i<=9;i++){
    		if(t[i]!=1){
    			return 0;
    		} 
    	}
    	return 1;
    }
    int main(){
    	//枚举三位数 
    	for(int i=1;i<=9;i++){
    		for(int j=1;j<=9;j++){
    			for(int k=1;k<=9;k++){
    				int x=i*100+j*10+k;//组成三位数
    				//保证其余两个数也是三位数
    				if(2*x<=999&&3*x<=999&&f(x)){
    					cout<<x<<" "<<2*x<<" "<<3*x<<endl;
    				} 
    			}
    		}	
    	} 
    	return 0;
    }
    
    • 1