zoukankan      html  css  js  c++  java
  • hdu 2098 分拆素数和

    题目连接

    http://acm.hdu.edu.cn/showproblem.php?pid=2098

    分拆素数和

    Description

    把一个偶数拆成两个不同素数的和,有几种拆法呢?

    Input

    输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。

    Output

    对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。

    SampleInput

    30

    26

    0

    SampleOutput

    3

    2

    打表,二分。。

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<vector>
     7 #include<map>
     8 #include<set>
     9 using std::cin;
    10 using std::cout;
    11 using std::endl;
    12 using std::find;
    13 using std::sort;
    14 using std::set;
    15 using std::map;
    16 using std::pair;
    17 using std::vector;
    18 using std::lower_bound;
    19 #define sz(c) (int)(c).size()
    20 #define all(c) (c).begin(), (c).end()
    21 #define iter(c) __typeof((c).begin())
    22 #define cls(arr,val) memset(arr,val,sizeof(arr))
    23 #define cpresent(c, e) (find(all(c), (e)) != (c).end())
    24 #define rep(i, n) for (int i = 0; i < (int)(n); i++)
    25 #define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i)
    26 #define pb(e) push_back(e)
    27 #define mp(a, b) make_pair(a, b)
    28 const int Max_N = 10010;
    29 typedef unsigned long long ull;
    30 struct PrimeSpilt {
    31     int tot, prime[Max_N];
    32     inline bool isPrime(int n) {
    33         for(int i = 2; i * i <= n; i++) {
    34             if(!(n % i)) return false;
    35         }
    36         return n != 1;
    37     }
    38     inline void init() {
    39         tot = 0;
    40         for(int i = 1;i < Max_N ;i++) {
    41             if(isPrime(i)) prime[tot++] = i;
    42         }
    43     }
    44     inline void work(int n) {
    45         int ans = 0;
    46         for(int i = 0;i < tot && prime[i] < n; i++) {
    47             int p = lower_bound(prime + i, prime + tot, n - prime[i]) - prime;
    48             if(prime[i] + prime[p] == n && i != p) ans++;
    49         }
    50         printf("%d
    ", ans);
    51     }
    52 }go;
    53 int main() {
    54 #ifdef LOCAL
    55     freopen("in.txt","r",stdin);
    56     freopen("out.txt","w+",stdout);
    57 #endif
    58     int n;
    59     go.init();
    60     while(~scanf("%d", &n) && n) go.work(n);
    61     return 0;
    62 }
    View Code
    By: GadyPu 博客地址:http://www.cnblogs.com/GadyPu/ 转载请说明
  • 相关阅读:
    Java基础03 基本程序设计结构
    Java基础02 开发环境搭建
    Java基础01 Java简介
    手动获取Spring上下文和Bean对象
    SAX解析XML
    Hbuilderx换行问题(属性合并一行展示)
    hbuilderx快捷键、回到上一步、回到上次编辑处
    查看jQuery版本号
    【基础篇】js对本地文件增删改查
    【基础篇】js对本地文件增删改查--查
  • 原文地址:https://www.cnblogs.com/GadyPu/p/4592395.html
Copyright © 2011-2022 走看看