zoukankan      html  css  js  c++  java
  • (银联复赛)爱喝「肥宅快乐水」的班长

    题目描述

    现在已经是暑假了!这周日,码队的弟弟所在的班级——上海某中学高二 33 班的同学们准备在码队弟弟的带领下(码队的弟弟是这个班的班长),举办一场派对。

    码队的弟弟让两名同学打开手机 「云闪付」app,在云闪付在线商城上采购饮料。经过这两名同学统计,发现一共需要买 nn 瓶饮料。而在云闪付在线商城上,一共有 mm 种不同的饮料(包括「肥宅快乐水」,并假设云闪付在线商城上的每种饮料的购买数量都没有限制)。由于码队的弟弟喜欢喝「肥宅快乐水」,所以这两名同学决定至少要买一瓶「肥宅快乐水」。

    这样看来,饮料购买的方案实在是太多了!两位同学突发奇想,想让你帮忙计算:总共有多少种购买饮料的方案。(答案对 10^9 + 7109+7 取模,同种饮料都是一样的,不作区分。)

    输入格式

    有多组数据。

    第一行输入一个整数 TT, 表示有 TT 组数据( 1le T le 10^41≤T≤104 )。

    对于每一组测试数据:输入一行,包含两个整数 n, mn,m,以空格分隔,分别表示这两位同学需要买 nn 瓶饮料(其中必须有一瓶是「肥宅快乐水」),云闪付在线商城中一共有 mm 种包括「肥宅快乐水」在内的不同的饮料。(1 le n,m le 10^31≤n,m≤103)

    输出格式

    对于每一组测试数据,输出一行。

    每行只包含一个整数,表示有多少种购买饮料的方案。

    提示

    假设我们用 FF 表示「肥宅快乐水」,用 AA 表示某种其他饮料。

    
针对样例输入 1:

    
对于第一组测试数据,只有 11 种购买饮料的方案:(FF)。


    对于第二组测试数据,有 22 种购买饮料的方案:(FF, FF),(FF, AA)。

    输出时每行末尾的多余空格,不影响答案正确性

    样例输入1复制

    2
    1 1
    2 2

    样例输出1复制

    1
    2

    样例输入2复制

    3
    1 2
    2 3
    3 3

    样例输出2复制

    1
    3
    6

    隔板法

    由于高中的知识都忘差不多了

    所以复习一下隔板法

    n个球分成m组如何分

    n个球显然有n-1个空,我们只需要就计算将m-1个隔板放插入空中即可

    #include<cstdio>
    #include<iostream>
    using namespace std;
    long long fac[2005];
    long long inv[2005];
    const long long mod=1000000007;
    long long q_pow(long long a,long long b)
    {
        long long ans=1;
        while(b)
        {
            if(b&1) ans=(ans*a)%mod;
            a=(a*a)%mod;
            b/=2;
        }
        return ans;
    }
    
    int main()
    {
        int t;
        fac[0]=1;
        for(long long i=1;i<=2000;i++)
        {
            fac[i]=(fac[i-1]*i)%mod;
            //cout<<fac[i]<<mod-2<<endl;
            inv[i]=q_pow(fac[i],1000000005);
    
        }
        scanf("%d",&t);
        while(t--)
        {
            int n,m;
            scanf("%d%d",&n,&m);
            if(n==1||m==1) printf("%d
    ",1);
            else
            {
                long long ans;
                ans=fac[m+n-2]*inv[m-1]%mod*inv[n-1]%mod;
                printf("%lld
    ",ans);
            }
        }
    }
    
  • 相关阅读:
    0级搭建类006-Oracle Solaris 安装 (10.13) 公开
    0级搭建类005-Oracle Solaris Unix安装 (11.4) 公开
    0级搭建类004-中标麒麟 Linux 安装 (V7.0) 公开
    0级搭建类003-CentOS Linux安装 (CentOS 7)公开
    0级搭建类002-Oracle Linux 8.x安装(OEL 8.0) 公开
    0级搭建类001-RedHat Enterprise Linux 8 安装(RHEL 8) 公开
    1级搭建类105-Oracle 19c 单实例 FS(19.3+RHEL 8)公开
    1级搭建类103-Oracle 12c 单实例 FS(12.2.0.1+RHEL 7)公开
    1级搭建类102-Oracle 11g 单实例 FS(11.2.0.4+RHEL 7)公开
    1级搭建类101-Oracle 11g 单实例 FS LVM(11.2.0.4+RHEL 5)公开
  • 原文地址:https://www.cnblogs.com/caowenbo/p/11852219.html
Copyright © 2011-2022 走看看