2 条题解

  • 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;
    }
    • 0
      @ 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

      信息

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