• Bzoj3028 食物


    Time Limit: 3 Sec  Memory Limit: 128 MB
    Submit: 534  Solved: 357
    [Submit][Status][Discuss]

    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/(1-x^2)

    可乐:1+x

    鸡腿:1+x+x^2

    蜜桃多:x+x^3+x^5+……=x/(1-x^2)

    鸡块:1+x^4+x^8+……=1/(1-x^4)

    包子:1+x+x^2+x^3

    土豆:1+x

    面包:1+x^3+x^6+……=1/(1-x^3)

    ↑先搞出这些东西的生成函数,全都乘起来得到x*(1-x)^(-4)

    然后用广义二项式定理进行奇奇怪怪的转换,发现(1-x)^4的第n项系数为C(n+3,3),因为外面还有一个x,所以答案所在位置要左移一位,系数为C(n+2,3)

    C(n+2,3)也就是n*(n+1)*(n+2)/6

     1 /*by SilverN*/
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 const int mod=10007;
     9 int exgcd(int a,int b,int &x,int &y){
    10     if(!b){x=1;y=0;return a;}
    11     int tmp=exgcd(b,a%b,x,y);
    12     int t=x;x=y;y=t-a/b*y;
    13     return tmp;
    14 }
    15 char s[600];
    16 int main(){
    17     int i,j;
    18     scanf("%s",s+1);
    19     int len=strlen(s+1);
    20     int x=0;
    21     for(i=1;i<=len;i++)x=(x*10+s[i]-'0')%mod;
    22     int inv,y;
    23     exgcd(6,mod,inv,y);
    24     inv=((inv%mod)+mod)%mod;
    25     printf("%d
    ",((x*(x+1)%mod)*(x+2))%mod*inv%mod);
    26     return 0;
    27 }
    本文为博主原创文章,转载请注明出处。
  • 相关阅读:
    POJ3070 Fibonacci 快速矩阵幂
    HDU1299 Diophantus of Alexandria 素因子分解
    HUTXXXX The window of the dazzling 模拟
    HUTXXXX 周正虎的难题 二分
    使用js给页面元素添加样式
    javascript 获取操作系统语言
    div层一直处于页面中间
    javascript:history.go()和History.back()的区别
    javascript的一些常用正则表达式
    [七日成魔2.1版]完美PHOTOSHOP教程新手培训套餐
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/6506619.html
Copyright © 2020-2023  润新知