Clay


私信TA

用户名:Clay3

访问量:368

签 名:

等  级
排  名 51731
经  验 279
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 江西农业大学
专  业

  自我简介:

解题思路:首先我们遍历所有可能的组合,只要该组和合法,我们就记下这一个可能,而除了元素相等的那个合法组合(可能存在),其它所有合法组和都有两种排列,也就是说我们多记了一个,所有我们记下的组合数要么是偶数(说名没有元素相等的组合存在,此时我们只要将其除二,就是答案),要么是奇数(说名有元素相等的组合存在, 此时我们只要将其减一再除二,就是答案)。


注意事项:

参考代码:

#include<iostream>
#include<math.h>
using namespace std;

int su(int n){                                        //该函数用于判断一个数是否为素数(懂的都懂)
    for(int i=2; i<=sqrt(n); i++)
        if(n%i==0)    return 0;
    return 1;
}

int main(){
    int out=0;
    int sign=0;        
    int n;    
    cin>>n;
    for(int i=2; i<n; i++){
        int t=n-i;
        if(su(t)==1&&su(i)==1){            //这里我们遍历从2到n-1的所有数,只要符合情况,我们就记下(out++)
            out++;
            if(i==t)                                    //加如出现了一对数值相等的组合,就说明答案是一个奇数,所有我们要输出时额外处理
                sign=1;    
        }    
    }
    cout<<(out+sign)/2<<endl;         //处理组合数并输出
    return 0;
}


 

0.0分

1 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »