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

CodeBuddy 接入 MCP,一键生成网站! 2024 年 11 月,Anthropic 公司搞了个挺有意思的新玩意 - Model Context Protocol(模型上下文协议)简称为 MCP 协议。简单来说,它就是给 AI 和各类工具数据之间搭了个标准化的”桥梁”,让开发者不用再为对接问题头疼了。mcp.so如下图所示,这是 mcp.so 网站中的 MCP Server。使用百度/高德地图分析旅线计算时间接 Puppeteer 自动操作网页使用 Github/Gitlab 让大模型接管代码仓库。 阅读详情

Saving Beans

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5775    Accepted Submission(s): 2320


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 family thinks that they have to solve a problem. They suppose that they will save beans in n different trees. However, since the food is not sufficient nowadays, they will get no more than m beans. They want to know that how many ways there are to save no more than m beans (they are the same) in n trees.

Now they turn to you for help, you should give them the answer. The result may be extremely huge; you should output the result modulo p, because squirrels can’t recognize large numbers.
 

Input
The first line contains one integer T, means the number of cases.

Then followed T lines, each line contains three integers n, m, p, means that squirrels will save no more than m same beans in n different trees, 1 <= n, m <= 1000000000, 1 < p < 100000 and p is guaranteed to be a prime.
 

Output
You should output the answer modulo p.
 

Sample Input
2 1 2 5 2 1 5
 

Sample Output
3 3
Hint
Hint For sample 1, squirrels will put no more than 2 beans in one tree. Since trees are different, we can label them as 1, 2 … and so on. The 3 ways are: put no beans, put 1 bean in tree 1 and put 2 beans in tree 1. For sample 2, the 3 ways are: put no beans, put 1 bean in tree 1 and put 1 bean in tree 2.

A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。
则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])  mod p同余

即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p) 

Lucas最大的数据处理能力是p在10^5左右,不能再大了,hdu 3037就是10^5级别的!


对于大组合数取模,n,m不大于10^5的话,用逆元的方法,可以解决。对于n,m大于10^5的话,那么要求p<10^5,这样就是Lucas定理了,将n,m转化到10^5以内解。

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define ms(x,y) memset(x,y,sizeof(x))
using namespace std;

typedef long long ll;

const int maxn = 1e5 + 5;

ll fac[maxn];

void init(ll mod)	//初始化乘积,优化C(n,m,mod)
{
    ll i;
    fac[0] =1;
    for(i =1; i <= mod; i++)
        fac[i] = fac[i-1]*i % mod;
}

ll exp_mod(ll a, ll b, ll mod)	//快速幂
{
    ll tmp = a % mod, ans =1;
    while(b)
    {
        if(b & 1)  ans = ans * tmp % mod;
        tmp = tmp*tmp % mod;
        b >>=1;
    }
    return  ans;
}

ll C(ll n, ll m, ll mod)	//朴素组合数n取m
{
    if(m > n)
    	return 0;
    return  fac[n]*exp_mod(fac[m]*fac[n-m], mod-2, mod) % mod;//逆元
}

ll Lucas(ll n, ll m, ll mod)	//lucas求组合数c n取m 
{
    if(m ==0)
    	return 1;
    return  (C(n%mod, m%mod, mod)*Lucas(n/mod, m/mod, mod))%mod;
}

int main()
{
	int t;
	scanf("%d", &t);
	while (t--)
	{
		ll n, m, mod;
		scanf("%I64d%I64d%I64d", &n, &m, &mod);
		init(mod);			//注意要初始化乘积
		//printf("%I64d\n", C(n+m,m,mod));
		printf("%I64d\n", Lucas(n + m, m, mod));
	}
	return 0;
}



朴素T

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define ms(x,y) memset(x,y,sizeof(x))
using namespace std;

typedef long long ll;

const int maxn = 1e5 + 5;

ll quick_pow(ll a, ll b, ll mod)        //快速幂
{
    ll ans = 1;
    a %= mod;
    while (b)
    {
        if (b & 1)
        {
            ans = ans * a % mod;
        }
        a = a * a % mod;
        b >>= 1;
    }
    return ans;
}

ll C(ll n, ll m, ll mod)    //朴素求组合数n取m
{
    if (m > n) return 0;
    ll ans = 1;
    for (int i = 1; i <= m; i++)
    {
        ll a = (n + i - m) % mod;
        ll b = i % mod;
        ans = ans * (a * quick_pow(b, mod - 2, mod) % mod) % mod;    //逆元求组合数
    }
    return ans;
}

ll lucas(ll n, ll m, ll mod)    //Lucas求组合数n取m
{
    if (m == 0) return 1;
    return C(n % mod, m % mod, mod) * lucas(n / mod, m / mod, mod) % mod;
}

int main()
{
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int t;
    scanf("%d", &t);
    while (t--)
    {
        ll n, m, mod;
        scanf("%I64d%I64d%I64d", &n, &m, &mod);
        //printf("%I64d\n", C(n+m,m,mod));
        printf("%I64d\n", lucas(n + m, m, mod));
    }
    return 0;
}





YOLOv8+BiFPN双向特征金字塔:多尺度目标检测精度提升28%的实战教程 双向特征金字塔网络(BiFPN)是一种强化多尺度特征融合支持“自顶向下+自底向上”的双向特征流动,同时保留不同尺度的细节信息;引入加权融合机制,自动学习不同特征的重要性权重;裁剪冗余节点,在轻量化的同时提升融合效率。 阅读详情

相关推荐

红外小目标检测新思路:当DETR遇上Mamba状态空间模型,速度提升3倍

本文探讨了将Mamba状态空间模型与DETR框架结合,用于解决红外小目标检测的难题。该创新方案通过线性复杂度的Mamba模块替代传统Transformer的自注意力机制,在保持高检测精度的同时,显著提升了推理速度,实现了实时性能的突破,为无人机巡检、安防监控等场景提供了高效解决方案。

hhh00的博客 664

[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

2026年(新服务器默认密码)最新各大厂商默认凭证大全

本文整理了国内外主流服务器厂商的默认管理接口凭证信息,包括Dell、HPE、浪潮、华为等品牌的管理接口类型、默认用户名/密码和IP地址。特别强调国产服务器在信创环境下的安全风险,指出国内厂商部分型号仍保留固定默认密码(如浪潮admin/admin),而国际厂商多采用随机密码标签。文章提供了新机初始化安全流程建议:查找机箱标签、立即修改默认密码、配置网络隔离、更新固件等。最后提醒运维人员,服务器安全应从首次上电开始重视,管理接口暴露是重大风险点,必须严格执行安全规范。

你好,旧时光! 1694

HDU 3037 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 thi

so_so_y的博客 304

Flightmare实战:从零搭建强化学习无人机控制环境

本文详细介绍了从零开始搭建Flightmare强化学习无人机控制环境的完整流程。内容包括环境准备、核心库安装、依赖冲突解决,以及如何运行PPO算法示例进行训练与可视化测试。文章还提供了环境配置、自定义任务修改及常见问题的避坑指南,帮助开发者快速上手这一模块化的无人机RL仿真平台。

weixin_29081101的博客 356

从零开始:如何在Windows上搭建Airsim仿真环境(避坑指南)

本文是一份详细的Windows平台AirSim仿真环境搭建指南。文章从硬件要求、Visual Studio与虚幻引擎安装开始,逐步讲解AirSim插件编译、UE项目配置,并重点介绍了通过WSL2连接PX4飞控软件实现软件在环仿真的完整流程。内容涵盖常见问题排查与性能优化,旨在帮助开发者避开常见陷阱,高效构建可用于无人机算法开发的虚拟测试平台。

earth的博客 300

【HDU3037】Saving Beans

Lucas+组合数学

sdfzchy的博客 1461

【Qt】QByteArray详解

对象共享同一份数据,直到修改时才进行深拷贝,以节省内存和计算资源。:可存储任意二进制数据(如图片、音频、协议数据),不依赖字符编码。与编码(如 UTF-8、Latin-1)之间的桥梁(例如。• 补零规则确保奇数字符串能正确解析,避免数据截断。:内部自动分配和释放内存,无需手动管理。将输入的字符串视为十六进制编码数据,返回实际数据长度(不包括结尾的。的输入必须是有效的十六进制字符(,但针对 Qt 框架做了优化。:处理加密后的二进制结果(如。• 如果输入字符串长度为奇数,• 若输入长度为奇数,自动在。

CSUC的博客 1597

组合数取模

刷了几道组合数取模的题,模板都是一样的  Lucas定理 关于Lucas定理   https://blog.youkuaiyun.com/cai_haiq/article/details/75954298    这个博客讲得很好 下面是模板 #include&lt;bits/stdc++.h&gt; using namespace std; #define ll long long int const...

甦萌的博客 273

2021-10-29【微生物】丨基于qiime2工具16S/ITS分析全套流程(上)

目录摘要工具与方法使用命令结果展示总结二级目录三级目录 摘要 前两个月项目特别多,最近终于有机会闲下来写点文章,把之前搭建的流程梳理一遍。前同事分析16S/ITS使用的qiime1,我接手后感觉不太适应,希望能够使用新版本来搭建,于是花了几天时间重新搭了这个流程, 工具与方法 使用工具:qiime2 使用版本:qiime2-2021.4 参考文档:https://docs.qiime2.org/2021.4/(最新版本2021.8) 使用命令 在这里插入代码片 结果展示 总结 二级目录 三级目录 ...

1万+

软件设计师---计算机系统

软件设计师---计算机系统

我从不打没有准备的仗! 3万+

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

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

weixin_33874713的博客 411

【光子 AI】AI Agent 知识体系深度研究报告

从理论基础到前沿应用:全面解析人工智能代理的核心架构、关键技术与发展趋势📅 2026 年 3 月 | 📊 深度研究报告 | 🔬 人工智能领域 | 📈 前沿技术分析**AI Agent(人工智能代理)**是一种能够感知环境、基于所获得的信息做出决策,并执行行动以影响该环境的软件系统。AI Agent 的设计旨在模仿或实现智能行为,它们可以在各种环境中操作,包括物理世界和虚拟空间。随着大语言模型(LLM)技术的突破性进展,AI Agent 正从实验室研究快速走向产业应用。根据 Gartner 发布的《2

AI天才研究院 176

hdu 3037 Saving Beans 【大组合数取模-Lucas定理+逆元取模】

Lucas定理 A、B是非负整数,p是质数。A B写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])  mod p同余 即:Lucas(n,m,p)=C(n%p,m%p)*Lucas(n/p,m/p,p)

智障 2531

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【HDU 3037】Saving 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的博客 142

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

*乘号的笔记本 382

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的博客 298

hdu 3037 Saving Beans(lucas定理模板)

题意: 求在n棵树上摘不超过m颗豆子的方案,结果对p取模。 解析: 题目可以转换成 x1+x2+……+xn=mx_1+x_2+……+x_n=m 有多少组解,m在题中可以取0~m。 利用插板法可以得出 x1+x2+……+xn=mx_1+x_2+……+x_n=m 解的个数为Cn−1n+m−1=Cmn+m−1C_{n+m-1}^{n-1}=C_{n+m-1}^m; 则题

小G的ACM之路 1529

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的博客 1294

HDU 3037 Saving Beans

2016暑期集训2-KHDU 3037 Saving Beans组合数性质,Lucas定理 传送门:HustOJ 传送门:HDU 题意给了n,m,p。把不超过m个相同的松子放入n个不同的树洞,有多少种方法,模p。思路题目相当于求n个数的和不超过m的方案数,即把小于等于m个物品分成n堆。 如果和恰好等于m,那么就等价于方程x1+x2+…+xn = m的解的个数,利用插板法可以得到方案数

P.H.S 316

HDU - 3037 Saving Beans (数论,组合数取模,lucas定理)

Saving Beans Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4735    Accepted Submission(s): 1883 Problem Description Although wint

fsq0827的博客 420

[ACM] hdu 3037 Saving Beans (Lucas定理,组合数取模)

Saving Beans 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 tim

逆风的方向 更适合飞翔 3406

Hdu 3037 Saving Beans 卢卡斯定理 解题报告

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 thi

Hawo11的博客 445

hdu-3037-Saving Beans(Lucas定理+大组合数取模)

hdu-3037-Saving Beans(Lucas定理+大组合数取模)

Seeker 740

Lucas定理 板子!!

【代码】Lucas定理 板子!!

2301_79075699的博客 369

hdu 3037 Saving Beans(lucas定理)(卢卡斯定理)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3037 解题思路: 题目可以转换成  x1+x2+……+xn=m 有多少组解,m在题中可以取0~m。 利用插板法可以得出x1+x2+……+xn=m解的个数为C(n+m-1,m); 则题目解的个数可以转换成求   sum=C(n+m-1,0)+C(n+m-1,1)+C(n+m-1,

piaocoder 1369
上一篇: ZOJ 2996 (1+x)^n【模板题】【常用技巧】
下一篇: HDU 6129 Just do it【杨辉三角】【思维题】【好题】
Archger
博客等级 码龄10年 79粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值