zoukankan      html  css  js  c++  java
  • [HDU 4828] Grids

    Grids

    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)
    Total Submission(s): 562    Accepted Submission(s): 223

    Problem Description
      度度熊最近很喜欢玩游戏。这一天他在纸上画了一个2行N列的长方形格子。他想把1到2N这些数依次放进去,但是为了使格子看起来优美,他想找到使每行每列都递增的方案。不过画了很久,他发现方案数实在是太多了。度度熊想知道,有多少种放数字的方法能满足上面的条件?
     
    Input
      第一行为数据组数T(1<=T<=100000)。
      然后T行,每行为一个数N(1<=N<=1000000)表示长方形的大小。
     
    Output
      对于每组数据,输出符合题意的方案数。由于数字可能非常大,你只需要把最后的结果对1000000007取模即可。
     
    Sample Input
    2 1 3
     
    Sample Output
    Case #1: 1 Case #2: 5
     
    Hint
    对于第二组样例,共5种方案,具体方案为:
     
    Source
    2014年百度之星程序设计大赛 - 初赛(第一轮)
     

    逆元、

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    #define ll long long
    #define N 1000010
    
    int dp[N];
    
    int exgcd(int a,int b,int& x, int& y)
    {
        if(b==0)
        {
            x=1;
            y=0;
            return a;
        }
        int d=exgcd(b,a%b,y,x);
        y-=a/b*x;
        return d;
    }
    int inv(int a,int MOD)
    {
        int x,y;
        exgcd(a,MOD,x,y);
        x=(x%MOD+MOD)%MOD;
        return x;
    }
    void init()
    {
        int MOD=1000000007;
        dp[1]=1;
        dp[2]=2;
        for(int i=3;i<=N-10;i++)
        {
            dp[i]=( (ll)dp[i-1]*(4*i-2)%MOD * (ll)inv(i+1,MOD))%MOD;
        }
    }
    int main()
    {
        init();
        int T,n,iCase=1;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            printf("Case #%d:
    %d
    ",iCase++,dp[n]);
        }
        return 0;
    }
    趁着还有梦想、将AC进行到底~~~by 452181625
  • 相关阅读:
    VS编译cmake工程提示 “无法识别的标记”错误解决方法
    Markdown
    latex公式
    ros:time::now()详解
    c++中PROTOBUF遍历所有属性及值
    ORB-SLAM3相关博文
    WSL2安装及GUI图形界面配置踩坑指南
    ROS与PCL数据转换
    手眼标定中AX=XB求解方法及MATLAB、C++代码
    正则表达式用于数据清洗
  • 原文地址:https://www.cnblogs.com/hate13/p/4442971.html
Copyright © 2011-2022 走看看