zoukankan      html  css  js  c++  java
  • 喵哈哈村的魔法考试 Round #5 (Div.2) C

    喵哈哈村的狼人杀大战(4)

    发布时间: 2017年3月6日 11:36   最后更新: 2017年3月6日 11:39   时间限制: 1000ms   内存限制: 128M

    喵哈哈村最近热衷于玩一个叫做狼人杀的游戏!

    徐元帅同学今天他抽到的是女巫的身份,按照他的一贯玩法,他喜欢一开始就把自己毒死。

    于是他早早的就出去了。

    他很无聊,于是出了一道题给自己玩。

    他从怀里面掏出了一个数字n。

    他想知道有多少组三元组(a,b,c),满足a<=b<=c,且a,b,c都是素数,而且a+b+c=n。

    本题包含若干组测试数据。
    每组测试数据只含有一个整数n。
    1<=n<=10000

    输出三元组的数量。

    复制
    3
    9
    0
    2

    这个题目就是先给素数打表,写一个素数数组...然后再去判断就好了(小细节...枚举前两个素数,最后一个用n减出来再判断一下)
     1 #include<iostream>
     2 #include<set>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<string.h>
     6 using namespace std;
     7 int n, p[5001], is_p[10002], len=0;
     8 void is_prime(int n){
     9     is_p[0]=1;
    10     is_p[1]=1;
    11     for(int i=2; i<n; i++){
    12         if(is_p[i]==0){
    13             p[len++]=i;
    14             for(int j=i*2; j<n; j+=i){
    15                 is_p[j]=1;
    16             }
    17         }
    18     }
    19 }
    20 int main(){
    21     memset(is_p, 0, sizeof(is_p));
    22     is_prime(10002);
    23     while(cin>>n){
    24         int cnt=0;
    25         for(int i=0; i<len; i++){
    26             for(int j=i; j<len; j++){
    27                 int a=p[i], b=p[j], c=n-a-b;
    28                 if(a+b>=n)    break;  //这里注意一下...要先判断下a+b和n的值,否则如果不判断的话,下一步is_p[]会re
    29                 if(is_p[c]==0&&c>=b) cnt++;
    30             }
    31         }
    32         cout<<cnt<<endl;
    33     }    
    34     return 0;
    35 }
  • 相关阅读:
    变量和值的延伸思考
    一念之想--多维数组
    java扫描控制台输入
    java字符转义
    javaee开发工具及环境配置过程
    java数组、泛型、集合在多态中的使用及对比
    flex的Accordion组件头部文本居中显示
    Visual Studio解决方案及项目的配置
    Away3D引擎学习入门笔记
    使用photoshop,把图片背景变成透明
  • 原文地址:https://www.cnblogs.com/ledoc/p/6559499.html
Copyright © 2011-2022 走看看