zoukankan      html  css  js  c++  java
  • 3028: 食物

    3028: 食物

    Time Limit: 3 Sec  Memory Limit: 128 MB
    Submit: 490  Solved: 324
    [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;
    //母函数+乘法逆元
    #include<cstdio>
    #include<cstring>
    #define mod 10007
    using namespace std;
    char s[510];int n;
    void exgcd(int a,int b,int &x,int &y){
        if(!b){x=1;y=0;return ;}
        exgcd(b,a%b,x,y);
        int t=x;x=y;y=t-a/b*y;
    }
    int main(){
        scanf("%s",s+1);int len=strlen(s+1); 
        for(int i=1;i<=len;i++) n=(n*10+s[i]-'0')%mod;
        int x,y;exgcd(6,mod,x,y);
        x=((x%mod)+mod)%mod;
        printf("%d",(((n*(n+1))%mod*(n+2))%mod*x)%mod);
        return 0;
    }
  • 相关阅读:
    《完美应用ubuntu》之全面管理ubuntu软件源
    ubuntu下安装CAJ阅读器
    re正则表达式方法
    Xpath做数据解析
    C++异常处理
    异常处理
    指针与引用
    总结:开放透明的环境对于大数据团队的重要性
    java控制流
    3. 最小生成树
  • 原文地址:https://www.cnblogs.com/shenben/p/6256446.html
Copyright © 2011-2022 走看看