题目:http://acm.hdu.edu.cn/showproblem.php?pid=2189

本题的数学模型如下:

分解的问题,常用母函数求解,这里要求每个“硬币”的价值必须为素数,所以需要写一个函数判断一个数是否位素数.

然后再套用母函数模板:

http://blog.csdn.net/ten_sory/article/details/59483762

C++代码如下:

#include<iostream>
using namespace std; int IsPrime(int n)
{
for(int i=2;i<=n-1;i++)
if(n%i==0)
return 0;
return 1;
} int main()
{
int C;
cin >> C;
while(C--)
{
int i,j,m;
int n;
cin >> n;
int k = n-1;
int *v = new int[k+1];
int s = 0;
int e = 100; for(i=1;i<=k;i++)
v[i] = i+1; //注意此处模板中的MAX = n;所以下面定义数组要用n+1的长度去定义.
int *a = new int[n+1];
int *b = new int[n+1];
for(i=0;i<=n;i++)
{
a[i] = 0;
b[i] = 0;
}
a[0] = 1; for(i=1;i<=k;i++)//一共n-1个()相乘,硬币数量分别是2~n,下面要除去其中不是素数的情况
{
if(IsPrime(v[i]))//如果硬币数量是素数,才可以
{
for(j=s;j<=e && j*v[i]<=n;j++)
for(m=0;m+j*v[i]<=n;m++)
b[m+j*v[i]]+=a[m];
for(m=0;m<=n;m++)
{
a[m] = b[m];
b[m] = 0;
}
}
}
cout << a[n] << endl;
} return 0;
}

上述代码,提交可以通过.

【hdoj_2189】来生一起走(母函数)的更多相关文章

  1. HDU2189 悼念512汶川大地震遇难同胞——来生一起走 【母函数】

    悼念512汶川大地震遇难同胞--来生一起走 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. HDUOJ ---悼念512汶川大地震遇难同胞——来生一起走

    悼念512汶川大地震遇难同胞——来生一起走 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  3. HDOJ 2189 悼念512汶川大地震遇难同胞——来生一起走 【母函数】

    题意:非常清楚不解释. 策略:如题. 就是个简单的母函数的改变. 这道题做了好久,才明确是那有毛病,还是理解的不够深刻. AC代码: #include<stdio.h> #include& ...

  4. hdu 2189 悼念512汶川大地震遇难同胞——来生一起走 基础母函数

    #include <iostream> #include <algorithm> #include <cstring> using namespace std; ] ...

  5. HDU2189 来生一起走

    好久没发博客了,最近遇到以下奇葩错误,不明觉厉,忍不住发一篇 /*母函数,因为要求的是素数,那么先打一个素数表,所有的因子都是素数构成 但是遇到一个奇葩事,当num初值取1,结果就出不来,运行了好久 ...

  6. HDU 2189 悼念512汶川大地震遇难同胞――来生一起走 --生成函数

    这题跟上两题也差不多. 把150以内的素数找出来,把素数的值看做硬币的面值,每个硬币的个数即ceil(150/prime[i]),因为再多也没用,最多组成n=150就行了,所以又回到了找硬币问题.用生 ...

  7. hdu 2189 悼念512汶川大地震遇难同胞——来生一起走

    题目 这道题用了,埃式筛选法和背包,我自己没有做出来,看了别人的代码,我也做不出来,特别是c[j]+=c[j-b[i]];弄了好久都没有弄懂. 这道题的解题思路:主要是先把150以内的所有素数找出来, ...

  8. HDOJ 2189 悼念512四川汶川大地震遇难者——来生一起走 【生成函数】

    意甲冠军:没有解释的很清楚. 策略:如果, 这是改变一个简单的生成函数. 这道题做了好久,才明确是那有毛病.还是理解的不够深刻. AC代码: #include<stdio.h> #incl ...

  9. HDU-2189来生一起走

    题目: 今天,又来了n位志愿者,指挥部需要将他们分为若干个小组,小组的数量不限,但是要求每个小组的人数必须为素数,请问我们有几种分组的方法呢? 特别说明: 1.可以只有一个组: 2.分组的方法只和人数 ...

随机推荐

  1. JS判断当前DOM树是否加载完毕

    /** * @function Monitor whether the document tree is loaded. * @param fn */function domReady(fn) { i ...

  2. git使用笔记(十二)stash

    By francis_hao    Oct 29,2017   git stash 保存当前工作目录的修改 概要 git stash list [<options>]git stash s ...

  3. 什么是static?什么是final?

    由static修饰的变量.常量.和方法被称为是静态变量.常量和 方法. 静态数据和静态方法的作用通常是为了提供共享数据或方法,如数学计算公式等,以static声明并且实现,这样当需要使用时,直接使用类 ...

  4. unbuntu 14.04 安装搜狗输入法

    http://blog.csdn.net/leijiezhang/article/details/53707181

  5. 前端多层回调问题解决方案之$.Deferred

    javascript引擎是单线程的,但是通过异步回调可以实现IO操作并行执行能力,当业务逻辑复杂的时候我们就进入回调地狱. 本文讲得ajax是在jquery1.5以前的版本,目的旨在让我们理解延迟对象 ...

  6. python基础--结构篇

    在C/C++/Java中,main是程序执行的起点,Python中,也有类似的运行机制,但方式却截然不同: Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入 ...

  7. 【Codeforces711E】ZS and The Birthday Paradox [数论]

    ZS and The Birthday Paradox Time Limit: 20 Sec  Memory Limit: 512 MB Description Input Output Sample ...

  8. 【51NOD-0】1019 逆序数

    [算法]离散化+树状数组(求逆序对) [题解]经典,原理是统计在i之前插入的且值≤i的个数,然后答案就是i-getsum(i) #include<cstdio> #include<a ...

  9. gridveiw的使用

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...

  10. Drainage Ditches(POJ1273+网络流+Dinic+EK)

    题目链接:poj.org/problem?id=1273 题目: 题意:求最大流. 思路:测板子题,分别用Dinic和EK实现(我的板子跑得时间均为0ms). Dinic代码实现如下: #includ ...