zoukankan      html  css  js  c++  java
  • Project Euler:Problem 77 Prime summations

    It is possible to write ten as the sum of primes in exactly five different ways:

    7 + 3
    5 + 5
    5 + 3 + 2
    3 + 3 + 2 + 2
    2 + 2 + 2 + 2 + 2

    What is the first value which can be written as the sum of primes in over five thousand different ways?



    #include <iostream>
    #include <string>
    using namespace std;
    
    int prime[1000];  //存储前1000个质数
    bool vis[10000];
    
    void getPrime()
    {
    	int count = 0;
    	memset(vis, 0, sizeof(vis));
    	for (int i = 2; i < 10000; i++)
    	{
    		if (!vis[i])
    		{
    			if (count >= 1000)
    				break;
    			prime[count++] = i;
    			for (int j = i*i; j < 10000; j += i)
    				vis[j] = 1;
    		}
    	}
    }
    int main()
    {
    	getPrime();
    	int *ways;
    	int num = 2;
    	while (true)
    	{
    		
    		ways = new int[num+1];
    		for (int i = 0; i < num + 1; i++)
    			ways[i] = 0;
    		ways[0] = 1;
    		for (int i = 0; i < 1000; i++)
    		{
    			for (int j = prime[i]; j <= num; j++)
    			{
    				ways[j] += ways[j - prime[i]];
    			}
    		}
    		//cout << num <<" " << ways[num]<< endl;
    		if (ways[num]>5000)
    			break;
    		else
    			num++;
    	}
    	cout << num << endl;
    	
    	system("pause");
    	return 0;
    }


  • 相关阅读:
    cf 785#
    hdu 4920 Matrix multiplication
    poj 2443 Set Operation
    bzoj 3687: 简单题
    洛谷 三月月赛 C
    洛谷 三月月赛 B
    洛谷 三月月赛 A
    bzoj 3156: 防御准备
    bzoj 3437: 小P的牧场
    bzoj 3675: [Apio2014]序列分割
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7095789.html
Copyright © 2011-2022 走看看