睹物思人512汶川大震遇难同胞——来生一打活动。HDU 2188-悼念512汶川大震遇难同胞――选拔志愿者(巴什博奕)


睹物思人512汶川大震遇难同胞――选拔志愿者

title: 悼念512汶川大震遇难同胞——来生一打走

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

tags: [acm,杭电,母函数]

题材链接

妈妈
你别哭
泪光照亮不了
咱们的程
让咱们团结一心
慢慢的移动
妈妈
我会牢记您和父亲的模样
牢记我们的预约
来生一打活动

地方这首诗节选自一各类诗人纪念遇难同胞的著作,并从未豪华的言语,但是每位读者都应有力所能及感受及作品传达的厚情意,也许还有丝丝无奈。确实,太多的关于孩子不幸的简报冲击着咱各级一样颗柔弱的心中。正而温家宝总统所说“多麻烦兴邦”,这会灾难让我们多80继底青年一下子熟了起,其中多人因为自愿者的地位活动及了抗震救灾的第一线。
今,灾区又来了n位志愿者,抗震救灾指挥部要用她们分成多只小组,小组的数目不限,但是要求每个小组的人须也素数,请问我们来几乎种分组的法为?
特别说明:
1、可以只有发生一个组;
2、分组的艺术就与人有关,而与具体的口无关,即:你可借用设人是无别之。

 

Input

输入数据首先包含一个正整数C,表示出C组测试用例,然后是C行数据,每行包含一个正整数n(2<=n<=150),表示志愿者的毕竟人数。

 

Output

于每组测试数据,请输出分组的方案数目,每个输出占一行。

 

Sample Input

3
3
4
5

 

Sample Output

1
1
2

Submit Status Practice HDU
2188

分析

请方案往往 母函数之想,注意先由表否则会晚点

Appoint description:  System Crawler  (2015-03-09)

代码

#include<bits/stdc++.h>
using namespace std;
int prime[150] ;
void printPrime()
{
    int temp[150]={0};
    for (int i = 2; i * i <= 150; i ++)
        for (int j = i + i; j <= 150; j += i)
            temp[j] = 1;
    int k = 0;
    for (int i = 2; i <= 150; i++)
        if (temp[i] == 0)
            prime[k++] = i;
            // k=35;
}
int main()
{
    printPrime();
    vector<int>sum, value;
    for (int i = 0; i <35; i++)
    {
        value.push_back(prime[i]);
    }
    int c1[200] = {0}, c2[200] = {0};
    for (int i = 0; i <=150; i += value[0])
        c1[i] = 1;
    for (int i = 1; i < 35; i++)
    {
        for (int j = 0; j <=150; j++)
                for (int k = 0; k + j <=150 && k <= 150; k += value[i])
                    c2[k + j] += c1[j];
        for (int k = 0; k <= 150; k++)
        {
            c1[k] = c2[k];
            c2[k] = 0;
        }
    }
    int t;
    scanf("%d", &t);
    while (t--)
    {
        int n;
        scanf("%d", &n);
        printf("%d\n", c1[n]);
    }
    return 0;
}

Description

于四川同胞中的不幸,全国全民纷纷伸出援助的手,差点儿每一个省市还派出了汪洋底援救人员,这中间含有抢险救灾的武警部队,治疗以及防疫的医护人员,以及进行思想疏导的心理学专家。依据要求。我校也有一个奔赴灾区救灾的名额,因为大师生报名踊跃,学校不得不进行选拔来支配最终的人。

经差不多车轮的考核,形势日趋明朗,最后之名额将于“林队”和“徐队”之间发生。可是非常巧合,2个人之简历差点儿一模型一样,这让主持选拔的8600分外是尴尬。无奈,他操纵通过捐款来决定两总人口谁会当选。 
选拔规则例如以下: 
1、最初的捐款箱是空的; 
2、两丁轮流捐款,每次捐款额必须也正整数,而且每人每次捐款太多不越m元(1<=m<=10)。 
3、最先使得总捐款额达到或超越n元(0<n<10000)的一方为胜者,则该能亲赴灾区服务。

 
俺们掌握,两人口都颇想入选志愿者名单。而且还是非常聪明之总人口,如果林队事先捐,请您想见谁能入选最后的花名册? 

 

Input

输入数据首先包括一个正整数C,表示包括C组測试用例。然后是C行数据,每行包括个别只刚刚整数n,m,n和m的意思參见上面提到的条条框框。

 

Output

对于每组測试数据,假而林队能当选。请输出字符串”Grass”,
假设徐队会当选,请输出字符串”Rabbit”,每一个实例的输出占一行。

 

Sample Input

 2
8 10
11 10 

 

Sample Output

 Grass
Rabbit 

裸地巴什博奕。以下简的牵线一下巴什博奕:仅仅有平等积聚n个物品,两单人轮番从立堆物品遭取物。规定每次至少获得一个,最多取m个,最后取光者得胜。

结论:假设n%(m+1)==0。后手赢,否则前手赢。

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
using namespace std;
int main()
{
    int T;
    int n,m;
    scanf("%d",&T);
    while(T--){
        scanf("%d %d",&n,&m);
        if(n%(m+1)==0)
            printf("Rabbit\n");
        else
            printf("Grass\n");
    }
    return 0;
}