zoukankan      html  css  js  c++  java
  • virtual hust 2013.6.21 NEFU 挑战编程----数论 E

    题目:Summation of Four Primes

    思路:好像有个什么定理说是任意的一个偶数都可以表示成两个素数的和,所以对于输入的n,最糟糕的情况是n=8=2+2+2+2,小于8的无解,对于大于8的情况,如果是奇数,我们就拿一个2和一个3出来,如果是偶数,我们就拿两个2出来,那么剩下的就是求某个偶数等于两个素数之和,继续暴力

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include <iostream>
    using namespace std;
    #define maxn 10000001
    bool vis[maxn];
    int n_prime=0;
    int prime[maxn/6];
    void Prime()
    {
        memset(vis,true,sizeof(vis));
        for(int i=2;i<maxn;i++)
            if(vis[i])
            {
                prime[++n_prime]=i;
                for(int j=2*i;j<maxn;j+=i)
                    vis[j]=0;
            }
    }
    int main()
    {
        int n;
        Prime();
        while(scanf("%d",&n)!=EOF)
        {
            if(n<8)
            {
                printf("Impossible.
    ");
                continue;
            }
            else if(n&1)
            {
                printf("2 3 ");
                n-=5;
            }
            else
            {
                printf("2 2 ");
                n-=4;
            }
            for(int i=1;i<=n_prime;i++)
            {
                if(vis[n-prime[i]])
                {
                    printf("%d %d
    ",prime[i],n-prime[i]);
                    break;
                }
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    HMM (隐马尔可夫) 推导 (上)
    图模型初识
    K-means 和 EM 比较
    EM-高斯混合模型
    EM算法-完整推导
    EM算法直观认识
    pandas 之 时间序列索引
    K-Means 算法
    接口。
    第一册:lesson ninety-nine。
  • 原文地址:https://www.cnblogs.com/overflow/p/3148229.html
Copyright © 2011-2022 走看看