zoukankan      html  css  js  c++  java
  • 【BZOJ 3028】 3028: 食物 (生成函数)

    3028: 食物

    Time Limit: 3 Sec  Memory Limit: 128 MB
    Submit: 569  Solved: 382

    Description

    明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!
    我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西。理所当然的,你当然要帮他计算携带N件物品的方案数。
    他这次又准备带一些受欢迎的食物,如:蜜桃多啦,鸡块啦,承德汉堡等等
    当然,他又有一些稀奇古怪的限制:
    每种食物的限制如下:
           承德汉堡:偶数个
           可乐:0个或1个
                鸡腿:0个,1个或2个
                蜜桃多:奇数个
                鸡块:4的倍数个
                包子:0个,1个,2个或3个
           土豆片炒肉:不超过一个。
                面包:3的倍数个
    注意,这里我们懒得考虑明明对于带的食物该怎么搭配着吃,也认为每种食物都是以‘个’为单位(反正是幻想嘛),只要总数加起来是N就算一种方案。因此,对于给出的N,你需要计算出方案数,并对10007取模。

    Input

    输入样例1
      1
    输出样例1
      1
    输入样例2
      5
    输出样例2
      35
     数据范围
       对于40%的数据,1<=N<=100000;
       对于所有数据,1<=n<=10^500;

    Output

    Sample Input

    Sample Output

    HINT

    Source

     
    【分析】
      这题目测是可以乱搞的?
      然后还是生成函数比较符合一般性啦。
     $(1+x^2+x^4+...)*(1+x)*(1+x+x^2)*(x+x^3+x^5+...)*(1+x^4+x^8+...)*(1+x+x^2+x^3)*(1+x)*(1+x^3+x^6+...)$
      然后等比数列求和 ($x^{inf}=0$)

      $=dfrac{1−x^2}{1−x}*dfrac{1−x^2}{1−x}*dfrac{1−x^3}{1−x}*dfrac{1−x^4}{1−x}*dfrac{1}{1−x^2}*dfrac{x}{1−x^2}*dfrac{1}{1−x^4}*dfrac{1}{1−x^3} $
    $=dfrac{x}{(1−x)^{4}}$

      【打得有点辛苦

      然后$G(x)=dfrac{1}{(1-x)^m}=(1+x+x^2+x^3+...)^m$的x^n的系数是,把n分成m分可空的。即$C_{n+m-1}^{m-1}$

      然后乘一个x,就是第n-1项的系数即为答案,即$C_{n-1+4-1}^{4-1}=C_{n+2}^{3}=dfrac{n*(n+1)*(n+2)}{6}$

      %%%http://blog.csdn.net/clove_unique/article/details/70748541

      【生成函数做这道题感觉很优越啊。。

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 using namespace std;
     7 #define Mod 10007
     8 #define LL long long
     9 
    10 char s[510];
    11 
    12 int main()
    13 {
    14     scanf("%s",s);
    15     int l=strlen(s),n=0;
    16     for(int i=0;i<l;i++)
    17     {
    18         n=n*10+s[i]-'0';
    19         n%=Mod;
    20     }
    21     n=1LL*n*(n+1)*(n+2)/6%Mod;
    22     printf("%d
    ",n);
    23     return 0;
    24 }
    View Code

    2017-04-25 22:12:06

  • 相关阅读:
    2017年暑期实习生招聘(百度)——两道编程题
    携程笔试中的一道编程题
    软工假期预习作业1
    假期作业
    FAFU 1557
    HDU 1028
    POJ 3126
    HDU5108
    POJ 1716
    HDU4790
  • 原文地址:https://www.cnblogs.com/Konjakmoyu/p/6764857.html
Copyright © 2011-2022 走看看