题意:

给定数列的定义:

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 ;
}

最新文章

  1. PHP HTTP请求
  2. vuex
  3. “眉毛导航”——SiteMapPath控件的使用(ASP.NET)
  4. spring-boot 之 使用Admin监控应用
  5. Spring使用非applicationContext.xm 默认名的配置文件的配置
  6. High购电商系统开发注意点
  7. HTML5+ 学习笔记3 storage.增删改查
  8. Cocos2d-X3.0 刨根问底(二)----- 从HelloWorld开始
  9. 移动开发 android 入门开发 阶段视频
  10. 分析fork后多进程对文件的共享
  11. DataBindings 与 INotifyPropertyChanged 实现自动刷新 WinForm 界面
  12. 在Raspberry上使用小度WIFI
  13. UESTC_冰雪奇缘 CDOJ 843
  14. initial pointer [expert c]
  15. SpringMVC强大的数据绑定(2)——第六章 注解式控制器详解
  16. 光环国际PRINCE2培训费是多少?
  17. R语言安装加载包
  18. 2017年 JavaScript 框架回顾 -- React生态系统
  19. class-逻辑回归与最大熵模型
  20. Python基础和原反补码及表达式

热门文章

  1. 谈谈Integer中的静态类IntegerCache
  2. 三十三、MySQL 导入数据
  3. linux磁盘满了怎么办??删掉无用的大文件
  4. MYSQL 自定义排序
  5. Python知识点入门笔记——Python文件操作、异常处理及random模块使用
  6. django之模型层
  7. 100个经典C语言程序(益智类)
  8. 数学算法:CF534A-Exam(思维)
  9. 最短路径:HDU2006-一个人的旅行(多个起点,多个终点)
  10. Hi3518EV300编译U-Boot和内核报错:loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt &lt; (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))&#39; failed. Aborted (core dumped)