【BZOJ4402】Claris的剑(组合计数)
2024-09-01 07:18:39
题意:
给定数列的定义:
1.每个元素都是正整数
2.每个元素不能超过M
3.相邻两个元素的差的绝对值必须是1
4.第一个元素的值必须是1
求有多少个长度不超过N的合法的本质不同的序列
两个序列本质不同,当且仅当存在至少一个数值,在两个序列中出现次数不一样
比如{1,2,3}和{1,3,2}是本质相同的
{1,2,3}和{1,2,1}则是本质不同的
答案对1e9+7取模
N,M<=2e6
思路:From https://blog.csdn.net/ws_yzy/article/details/50753724
#include<cstdio>
typedef long long ll;
using namespace std;
#define MOD 1000000007
#define N 2100000
ll fac[N],inv[N]; ll c(int x,int y)
{
return fac[x]*inv[y]%MOD*inv[x-y]%MOD;
} ll calc(int x,int y)
{
if(x<) return ;
if(x==||x==) return ;
return c(x/+y,y);
} int main()
{
int n,m;
scanf("%d%d",&n,&m);
fac[]=;
for(int i=;i<=n;i++) fac[i]=fac[i-]*i%MOD;
inv[]=inv[]=;
for(int i=;i<=n;i++) inv[i]=inv[MOD%i]*(MOD-MOD/i)%MOD;
for(int i=;i<=n;i++) inv[i]=inv[i]*inv[i-]%MOD;
ll ans=;
if(n&&m) ans++;
for(int i=;i<=m;i++)
{
ans=(ans+calc(n-i,i-))%MOD;
ans=(ans+calc(n-i-,i-))%MOD;
}
printf("%lld\n",ans);
return ;
}
最新文章
- PHP HTTP请求
- vuex
- “眉毛导航”——SiteMapPath控件的使用(ASP.NET)
- spring-boot 之 使用Admin监控应用
- Spring使用非applicationContext.xm 默认名的配置文件的配置
- High购电商系统开发注意点
- HTML5+ 学习笔记3 storage.增删改查
- Cocos2d-X3.0 刨根问底(二)----- 从HelloWorld开始
- 移动开发 android 入门开发 阶段视频
- 分析fork后多进程对文件的共享
- DataBindings 与 INotifyPropertyChanged 实现自动刷新 WinForm 界面
- 在Raspberry上使用小度WIFI
- UESTC_冰雪奇缘 CDOJ 843
- initial pointer [expert c]
- SpringMVC强大的数据绑定(2)——第六章 注解式控制器详解
- 光环国际PRINCE2培训费是多少?
- R语言安装加载包
- 2017年 JavaScript 框架回顾 -- React生态系统
- class-逻辑回归与最大熵模型
- Python基础和原反补码及表达式
热门文章
- 谈谈Integer中的静态类IntegerCache
- 三十三、MySQL 导入数据
- linux磁盘满了怎么办??删掉无用的大文件
- MYSQL 自定义排序
- Python知识点入门笔记——Python文件操作、异常处理及random模块使用
- django之模型层
- 100个经典C语言程序(益智类)
- 数学算法:CF534A-Exam(思维)
- 最短路径:HDU2006-一个人的旅行(多个起点,多个终点)
- Hi3518EV300编译U-Boot和内核报错:loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt <; (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))&#39; failed. Aborted (core dumped)