hdu 3037 Saving Beans(lucas定理模板)

.NET 8 组件之IOC容器组件 NET 8中的IOC容器组件继承了前几代的优良传统,并在性能、扩展性、灵活性等方面进行了诸多优化,使得它在现代应用开发中依然保持领先地位。通过合理使用IOC容器,开发者可以更高效地管理依赖关系,编写更加模块化、可维护的代码。随着.NET生态的不断发展,IOC容器将继续扮演关键角色,为开发者提供强大的依赖管理功能。 阅读详情

题意:

求在n棵树上摘不超过m颗豆子的方案,结果对p取模。

解析:

题目可以转换成 x1+x2++xn=m 有多少组解,m在题中可以取0~m。

利用插板法可以得出 x1+x2++xn=m
解的个数为Cn1n+m1=Cmn+m1

则题目解的个数可以转换成求 sum=C0n+m1+C1n+m1+C2n+m1+Cmn+m1

利用公式Crn=Crn1+Cr1n1==>sum=Cmn+m

那么答案,就是要求Cmn+m%p

因为n,m很大,这里可以直接套用Lucas定理的模板即可。

关于Lucas定理

Lucas(n,m,p)=C(n%p,m%p,p)Lucas(n/p,m/p,p)
//这里可以采用对n分段递归求解

Lucas(x,0,p)=1

nm分解变小之后问题又转换成了求(a/b)%p

(a/b)%p可以转换成aInv(bp)
Inv(b,p)为b对p的逆元。

my code

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;  
typedef long long ll;
const int N = 100005;
ll fac[N];

ll modpow(ll a, ll b, ll MOD) {
    ll ret = 1;
    while(b) {  
        if(b&1) ret = (ret*a)%MOD;
        a = (a*a)%MOD;
        b>>=1;
    }
    return ret;
}


ll getFactor(ll p) {
    fac[0] = 1;
    for(int i = 1; i <= p; i++)
        fac[i] = (fac[i-1]*i) % p;
}

ll Lucas(ll n, ll m, ll p) {  
    ll ret=1;
    while(n && m) {
        ll a = n%p, b = m%p;  
        if(a<b) return 0; 
        ret = (ret * fac[a] * modpow(fac[b]*fac[a-b]%p, p-2, p)) % p;
        n/=p;
        m/=p;
    }
    return ret;  
}  

int main() {
    int T;
    scanf("%d", &T);
    while(T--) {
        ll n, m, p;
        scanf("%I64d%I64d%I64d", &n, &m, &p);
        getFactor(p);
        printf("%I64d\n",Lucas(n+m,m,p));
    }
    return 0;
}
10X Genomics数据实战:手把手教你用Seurat处理单细胞PBMC数据(附完整代码) 本文详细介绍了如何使用Seurat处理10X Genomics的单细胞PBMC数据,从数据获取、质控到降维分析和细胞分群的全流程。通过实战代码演示,帮助研究者掌握单细胞RNA测序数据分析的核心技术,提升对细胞异质性的理解。 阅读详情

相关推荐

十大排序算法详解(一)冒泡排序、选择排序、插入排序、快速排序、希尔排序

冒泡排序、选择排序、插入排序、快速排序、希尔排序

HK的博客 18万+

HDU 3037Saving Beans Lucas定理模板

http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板。 现在才写,noip滚粗前兆QAQ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; int ...

as2886089的博客 141

基于EB工具的TC3xx_MCAL配置开发05_ADC模块硬件Pwm触发Demo配置

基于EB工具,硬件Pwm触发ADC采集Demo配置详细介绍

initiallizer的博客 3452

HDU3037Saving Beans 【组合数取模,即,LUCAS定理模板

http://acm.hdu.edu.cn/showproblem.php?pid=3037 Problem Description Although winter is far away, squirrels have to work day and night to save beans. They need plenty of food to get th

*乘号的笔记本 379

HDU 3037 Saving BeansLucas定理】【模板题】【模板】【组合数取余】

Saving Beans Time Limit: 6000/3000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5775Accepted Submission(s): 2320 Problem Description Although win...

aaf76097的博客 180

HDU3037Saving Beanslucas定理模板

题目相当于求n个数的和不超过m的方案数。 如果和恰好等于m,那么就等价于方程x1+x2+...+xn = m的解的个数,利用插板法可以得到方案数为: (m+1)*(m+2)...(m+n-1)  = C(m+n-1,n-1) = C(m+n-1,m) 现在就需要求不大于m的,相当于对i = 0,1...,m对C(n+i-1,i)求和,根据公式C(n,k) = C(n-1,k)+C

Rain 416

HDU3037——Saving Beans(数论,组合数取模,lucas定理模板

题目如下: Saving Beans Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4084    Accepted Submission(s): 1581 Problem Description Al

say_c_box的博客 1291

HDU 3037 Saving BeansLucas定理模板题)

Problem Description Although winter is far away, squirrels have to work day and night to save beans. They need plenty of food to get through those long cold days. After some time the squirrel fami...

weixin_30323961的博客 196

GPU租赁平台实测:AutoDL、秘塔智算等价格与避坑指南

深度学习和LoRA微调已成为AI工程师的日常,而本地显卡显存不足、算力瓶颈也随之而来。在面对动辄数小时乃至数天的模型训练任务时,越来越多的开发者开始选择GPU租赁服务作为弹性算力补充。不同平台的计费模式、数据存储成本、带宽限制以及排队机制差异巨大。本文基于一个月实测,梳理了主流GPU云平台的性价比、性能表现和踩坑经验,帮助您根据预算和场景选择最合适的算力方案。

weixin_33874713的博客 400

【大组合数取模 Lucas定理 模板HDU - 3037 A - Saving Beans

A - Saving Beans  HDU - 3037 Although winter is far away, squirrels have to work day and night to save beans. They need plenty of food to get through those long cold days. After some time the squirre...

qq_41037114的博客 216

[HDU3037] Saving Beans Lucas定理

传送门Problem DescriptionAlthough winter is far away, squirrels have to work day and night to save beans. They need plenty of food to get through those long cold days. After some time the squirrel family...

LvYanchang的博客 332

HDU 3037 隔板法 + Lucas 定理

题意 传送门 HDU 3037 Saving Beans 题解 求将不超过 MMM 的物品划分至 NNN 个盒子,可以有盒子为空的方案数。设取 kkk 个物品,应用隔板法,那么方案为 Ck+N−1N−1C_{k+N-1}^{N-1}Ck+N−1N−1​。添加一个盒子,编号为 N+1N+1N+1,那么这个盒子分到 kkk 个物品时的方案数,都对应了 NNN 个盒子分到 M−kM-kM−k 个物品的方案数。那么答案为 CN+MMC_{N+M}^{M}CN+MM​。预处理阶乘,为了保证计算中存在逆元,应用 Luc

neweryyy的博客 197

HDU 3037 Saving Beans lucas定理小试

分析:不超过m个在n个篮子里,

行走世间,皆为妖怪 630

HDU 3037 Saving BeansLucas定理

组合数取模 Lucas定理入门

Ab.Ever 354

HDU3037 Saving Beans Lucas 定理+逆元

HDU3037 Saving Beans 题目相当于求n个数的和不超过m的方案数。 如果和恰好等于m,那么就等价于方程x1+x2+...+xn = m的解的个数,利用插板法可以得到方案数为: (m+1)x(m+2)...(m+n-1)  = C(m+n-1,n-1) = C(m+n-1,m) 现在就需要求不大于m的,相当于对i = 0,1...,m对C(n+i-1,i)求和,根据公式C(n...

Qianyri的博客 295

Saving Beans HDU - 3037(题解)

原题 http://acm.hdu.edu.cn/showproblem.php?pid=3037 题目大意 题目要求把i颗豆(0<=i<=m)放进n个洞里有多少种情况. 题目分析 这道题可以看作是在m颗豆里面按顺序插入n+1个板,就是把这m颗豆分成n+1堆,其中n堆是要放入洞中的,还有1堆是不放进洞中的.这时候情况有(m+1)(m+2)...(m+n+1),又因为这些板...

weixin_30338497的博客 134

hdu3037Saving Beans lucas定理

hdu3037 lucas 对组合数取模 lucas(n,m)=C(n%mod,m%mod)*lucas(n/mod,m/mod)%mod; lucas(n,0)=1; #include #include using namespace std; __int64 jc[100010]; __int64 exgcd(__int64 a,__int64 b,__int64

Time flies 1217

hdu 3037 Saving Beans Lucas定理

题意:将不超过m颗豆子存储在n颗不同的树上,求种类数结果模p,输入的p一定是质数。 用隔板法求种类数:http://blog.sina.com.cn/s/blog_7cc6f2770100red3.html 题解:http://m.blog.csdn.net/discreeter/article/details/70244319 费马小定理求逆元:http://blog.csdn.net/c

chen_minghui的博客 289

Hdu3037 Saving Beans Lucas定理

Description Although winter is far away, squirrels have to work day and night to save beans. They need plenty of food to get through those long cold days. After some time the squirrel family thinks t

Megumin的博客 402
上一篇: hdu 5384 Danganronpa(AC自动机)
下一篇: HDU 2896 病毒侵袭(AC自动机)
HelloWorld10086
博客等级 码龄12年 88粉丝 614原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值