首页 > 其他分享 > Pinely Round 1 (Div. 1 + Div. 2)--D

Pinely Round 1 (Div. 1 + Div. 2)--D

时间:2023-02-15 23:13:33浏览次数:50  
标签:-- Pinely 1e6 long int ans Div mod

D. Carry Bit

思路

首先时分堆,也就是把小球放进盒子的问题,然后进行讨论

代码

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
const int M=1e6+5,mod=1e9+7;

int kpow(int a,int b) {
    int ans=1;
    while(b) {
        if(b&1)ans=ans*a%mod;
        b>>=1;
        a=a*a%mod;
    }
    return ans;
}

int fact[M],infact[M],a[M];
void init(int n=1e6) {
    fact[0]=infact[0]=a[0]=1;;
    for(int i=1;i<=n;i++) {
        fact[i]=fact[i-1]*i%mod;
        infact[i]=kpow(fact[i],mod-2);
        a[i]=a[i-1]*3%mod;
    }
}

int C(int a,int b) {
    return fact[a]*infact[b]%mod*infact[a-b]%mod;
}

signed main() {
    int n,k;
    cin>>n>>k;
    init();
    if(k==0)cout<<a[n]<<'\n';
    else {
        int ans=0;
        for(int i=1;i<=k;i++) {//要选的堆的数量
            int j=k+i;//需要的位置
            //采用隔板法进行计算
            if(j-1<=n)ans=(ans+C(k-1,i-1)*a[n-2*i+1]%mod*C(n-k,i-1)%mod)%mod;
            if(j<=n)ans=(ans+C(k-1,i-1)*a[n-2*i]%mod*C(n-k,i)%mod)%mod;
            //隔板法求放的种类,然后对剩下的进行相乘,还要对箱子的位置进行排序
        }
        cout<<ans<<'\n';
    }
    return 0;
}

标签:--,Pinely,1e6,long,int,ans,Div,mod
From: https://www.cnblogs.com/basicecho/p/17125108.html

相关文章

  • zfs 之 `label is missing` 问题解决方法.
    具体报错信息status:Oneormoredevicescouldnotbeusedbecausethelabelismissingorinvalid.Sufficientreplicasexistforthepooltocontinue......
  • 第七章 类和对象 Part3 类的静态成员
    静态成员在类定义中,它的成员(包括成员变量和成员函数),这些成员可以用关键字static声明为静态的,称为静态成员。不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被......
  • SpringMVC
    第一章初识SpringMVC1.1SpringMVC概述SpringMVC是Spring子框架SpringMVC是Spring为【展现层|表示层|表述层|控制层】提供的基于MVC设计理念的优秀的Web框架,......
  • 1. http协议
    http协议http协议(超文本传输协议)http协议是基于Tcp/ip协议之上的应用层协议,不关心数据传输的细节,用来规范客户端和服务器端的数据传输格式(客户端和服务器端请求和响......
  • 数论模板
    数学配合oiwiki:https://oi-wiki.org/math/位运算int__builtin_ffs(intx):返回x的二进制末尾最后一个1的位置,位置的编号从1开始(最低位编号为1)。当x为0时......
  • istio---查看
    查看listener侦听器,inbound入向,outbound出向基于service自动生成cluster  ......
  • 算法随想Day13【二叉树】| LC102-二叉树的层次遍历(系列题目)、LC226-翻转二叉树、LC1
    二叉树层次遍历的相关题目102.二叉树的层序遍历107.二叉树的层次遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.......
  • Java 8新特性之 Optional 类
    前言java.util.Optional是java8中引进的一个新的类,我们通过Optional类的源码可以看到,该方法的作用可以对可能缺失的值进行建模,而不是直接将null赋值给变量。Optional类......
  • [10] 缓存穿透&击穿&雪崩&过期
    Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。......
  • CentOS 安装 SNAP
    一、CentOS71.安装(1)安装epel库sudoyuminstallepel-release-y(2)安装yum插件coprsudoyuminstallyum-plugin-copr-y(3)添加仓库sudoyumcopren......