zoukankan      html  css  js  c++  java
  • AC日记——A+B Problem(再升级) 洛谷 P1832

    题目背景

    ·题目名称是吸引你点进来的

    ·实际上该题还是很水的

    题目描述

    ·1+1=? 显然是2

    ·a+b=? 1001回看不谢

    ·哥德巴赫猜想 似乎已呈泛滥趋势

    ·以上纯属个人吐槽

    ·给定一个正整数n,求将其分解成若干个素数之和的方案总数。

    输入输出格式

    输入格式:

    一行:一个正整数n

    输出格式:

    一行:一个整数表示方案总数

    输入输出样例

    输入样例#1:
    7
    输出样例#1:
    3

    说明

    【样例解释】

    7=7 7=2+5

    7=2+2+3

    【福利数据】

    【输入】 20

    【输出】 26

    【数据范围及约定】

    对于30%的数据 1<=n<=10

    对于100%的数据,1<=n<=10^3

    思路:

      欧拉筛素数,然后背包求方案;

    来,上代码:

    #include <iostream>
    
    using namespace std;
    
    long long int n,prime[5005],num_prime,dp[5005];
    
    bool if_prime[5005];
    
    void euler(int limit)
    {
        for(int i=2;i<=limit;i++)
        {
            if(!if_prime[i]) prime[++num_prime]=i;
            for(int j=1;prime[j]*i<=limit&&j<=num_prime;j++)
            {
                if_prime[i*prime[j]]=true;
                if(i%prime[j]==0) break;
            }
        }
    }
    
    int main()
    {
        cin>>n;
        euler(n);dp[0]=1;
        for(int i=1;i<=num_prime;i++)
        {
            for(int j=prime[i];j<=n;j++) dp[j]+=dp[j-prime[i]];
        }
        cout<<dp[n];
        return 0;
    }
  • 相关阅读:
    爬虫前面
    常用模块学习
    函数、递归、内置函数
    迭代器、装饰器、软件开发规范
    python基础
    列表、字典、集合
    介绍、基本语法、流程控制
    python学习的第一个星期
    vmware使用nat连接配置
    Vue API 3模板语法 ,指令
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6492216.html
Copyright © 2011-2022 走看看