news 2026/10/2 21:04:27

《P17017 [GESP202606 八级] 堆石子》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《P17017 [GESP202606 八级] 堆石子》

题目描述

有 m 堆石子,编号为 1,2,⋯,m,其石子数量分别记为 a1​,a2​,⋯,am​。

现在要求第 1 堆石子恰有 n 个(即 a1​=n),并且此后每堆石子的数量严格小于前一堆,即 ai​<ai−1​ (2≤i≤m)。此外,每堆至少需要有一个石子,即 ai​≥1 (1≤i≤m)。

在总石子数量不设限制的情况下,给定 m≥2,n≥1,有多少个满足要求的石子堆放方案?

两个方案不同,当且仅当,两个方案中至少有一堆石子数量不同。

如果不存在满足要求的方案,输出 0。由于方案数可能很大,请输出方案数对 109+7 取模后的结果。

输入格式

输入一行两个正整数 m 和 n。

输出格式

输出一个整数,表示总方案数对 109+7 取模后的结果。

输入输出样例

输入 #1复制

3 5

输出 #1复制

6

说明/提示

样例解释 1

有 (5,4,3),(5,4,2),(5,4,1),(5,3,2),(5,3,1) 和 (5,2,1) 共计 6 种方案。

数据范围

数据点编号数据范围特殊性质
1,22≤m≤100,1≤n≤1000≤n−m≤5
3,4,52≤m≤100,1≤n≤108无
6,7,8,9,10

2≤m≤105,1≤n≤108

代码实现:

#include <iostream> using namespace std; typedef long long ll; const int MOD = 1e9 + 7; const int MAXK = 1e5 + 10; ll powmod(ll a, ll b) { ll res = 1; while(b) { if(b&1) res = res * a % MOD; a = a * a % MOD; b >>=1; } return res; } int main() { ll m, n; cin >> m >> n; ll K = m - 1; ll N = n - 1; if(N < K) { cout << 0 << endl; return 0; } ll numer = 1; for(ll i = 0; i < K; i++) { ll term = (N - i) % MOD; numer = numer * term % MOD; } ll fact = 1; for(ll i = 1; i <= K; i++) { fact = fact * i % MOD; } ll inv_fact = powmod(fact, MOD - 2); ll ans = numer * inv_fact % MOD; cout << ans << endl; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 21:04:04

阿里云 WAF 挂 ALB 观察模式:不改 DNS 试用与安全退出(建议收藏)

在不改 DNS、证书和源站的前提下,用云产品接入把阿里云 WAF 挂到 ALB 做观察试用;扫描/CC 改不成观察时必须整模板关闭,退出要分清「只摘 ALB」与「释放实例」。 目录 前言 一、先做决策:试不试、怎么退 二、架构:不改 CNAME 的数据面路径 三、接入顺序与红线 四、试用检查…

作者头像 李华
网站建设 2026/10/2 21:01:26

上位机与PLC:替代还是协同?工业控制选型与实战解析

干工控这行的人&#xff0c;几乎都绕不开一个问题&#xff1a;上位机到底能不能替代PLC&#xff1f;尤其是项目预算吃紧、想直接用PC统一管理的场景&#xff0c;这个念头基本每个工程师都动过。我见过不少刚入行的朋友&#xff0c;上来就问“我能不能直接用C#写个界面&#xff…

作者头像 李华
网站建设 2026/10/2 21:00:06

长沙小学数学培训,四五年级是关键提升期,赏识培训给出答案

长沙小学数学培训&#xff0c;四五年级是关键。四年级开始&#xff0c;小数加减、平行四边形与梯形、周期问题、乘法原理初步等内容陆续登场。五年级则进入小数乘除、分数加减、简易方程、数论进阶等更深层次的内容。这个阶段&#xff0c;孩子从“具象计算”向“抽象计算”过渡…

作者头像 李华