4 条题解

  • 2
    @ 2022-6-18 12:22:49

    这题是一道“提交答案题”。

    题目:一个三位数,各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、百位数字之和不是质数。编程找出所有符合条件的三位数。

    思路: 这一题题目说明是一个“三位数”,则我们可以用枚举的方法,分别枚举百位、十位、个位。 但是要注意题目给出的规则“各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、百位数字之和不是质数”。

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    bool ss(int n)//判断素数的函数 
    {
    	if(n<2)return false;
    	if(n==2)return true;//特判 
    	for(int i=2; i<=sqrt(n); i++)  
    		if(n%i==0)
    	  		return false;
    	return true;
    }
    signed main() {
    	int sum=0;//计数器 
    	for(int i=1; i<=9; i++)//枚举百位,注意最高位不能为0 
    		for(int j=0; j<=9; j++)//枚举十位 
    			for(int k=0; k<=9; k++)//枚举个位 
    				if(i!=j&&i!=k&&j!=k&&i+k<j&&!ss(i+j))//判断是否合法 
    				{
    					sum++;//个数加1 
    					cout<<i<<j<<k<<' ';
    					if(sum==8) cout<<endl,sum=0;//输出八个数字后,换行 
    				}
    	return 0;
    }
    

    这道题是纯模拟,就是要细心,不要漏掉题目条件。

    PS:可以打表。

    • 1
      @ 2025-10-19 8:12:45

      #include<bits/stdc++.h> #define ll long long #define un unsigned #define int long long #define db double #define st string #define ct const #define xh(a,b,c) for(int a=b;a<=c;a++) #define wx while(1) #define dn(a,b,c) for(int a=b;a>=c;a--) using namespace std; bool ss(int n){ if(n<2)return 0; for(int i=2;i*i<=n;i++)if(n%i0)return 0; return 1; } int ans; signed main(){ xh(i,1,9)xh(j,0,9)xh(k,0,9)if(i!=j&&j!=k&&i!=k&&!ss(i+j)&&j>i+k){ ans++; cout<<i<<j<<k<<' '; if(ans%80)cout<<endl; } return 0; }

      • 0
        @ 2025-7-4 9:26:31

        模拟

        #include <bits/stdc++.h>
        using namespace std;
        int n,x,mi=INT_MAX,a[1005];
        bool prime(int x){//判断素数
        	if(x==1)return 0;
        	for(int i=2;i<=sqrt(x);i++){
        		if(x%i==0)return 0;
        	}
        	return 1;
        }
        int main() {
        	for(int i=1;i<=9;i++){
        		for(int j=0;j<=9;j++){
        			for(int k=0;k<=9;k++){
        				if(j>i+k&&!prime(i+j)&&i!=j&&j!=k&&i!=k){//枚举
        					x++;
        					a[x]=i*100+j*10+k;
        				}
        			}
        		}
        	}
        	int k=1;
        	for(int i=1;i<=x/8;i++){//输出(8个一行)
        		for(int j=1;j<=8;j++){
        			cout<<a[k]<<' ';
        			k++;
        		}
        		cout<<endl;
        	}
        	//cout<<k;
        	for(int i=k;i<=x;i++)cout<<a[i]<<' ';//剩余部分
            return 0; 
        }
        
        • 0
          @ 2022-7-25 11:27:14
          #include<bits/stdc++.h>
          using namespace std;
          long n,i,s,j,x,k;
          long pd(long n)//判素
          {
          	if(n<2)return 0;
          	for(long i=2;i<=sqrt(n);i++)if(n%i==0)return 0;
          	return 1;
          }
          int main()
          {
          	for(i=100;i<1000;i++)//简单枚举
          		if(i%10!=i/100&&i/100!=i/10%10&&i%10!=i/10%10&&pd(i/10%10+i/100)==0&&i/10%10>(i/100+i%10))
          		{
          			cout<<i<<' ';s++;
          			if(s%8==0)cout<<endl;
          		}
          	return 0;
          }
          • 1

          信息

          ID
          35
          时间
          1000ms
          内存
          256MiB
          难度
          7
          标签
          (无)
          递交数
          266
          已通过
          68
          上传者