3142: [Hnoi2013]数列

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 1721  Solved: 854
[Submit][Status][Discuss]

Description

小
T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨。股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N。在疯涨的K天中小T观察
到:除第一天外每天的股价都比前一天高,且高出的价格(即当天的股价与前一天的股价之差)不会超过M,M为正整数。并且这些参数满足M(K-
1)<N。
小T忘记了这K天每天的具体股价了,他现在想知道这K天的股价有多少种可能

Input

只有一行用空格隔开的四个数:N、K、M、P。对P的说明参见后面“输出格式”中对P的解释。
输入保证20%的数据M,N,K,P≤20000,保证100%的数据M,K,P≤109,N≤1018 。

Output

仅包含一个数,表示这K天的股价的可能种数对于P的模值。【输入输出样例】

Sample Input

7 3 2 997

Sample Output

16
【样例解释】
输出样例的16表示输入样例的股价有16种可能:
{1,2,3},{1,2,4},{1,3,4},{1,3,5}, {2,3,4},{2,3,5},{2,4,5},{2,4,6},
{3,4,5},{3,4,6},{3,5,6},{3,5,7},{4,5,6},{4,5,7},{4,6,7},{5,6,7}

HINT

Source

[Submit][Status][Discuss]

只能说太妙了。如果考虑枚举每一天的股价的话,由于后一天的受到前一天的影响,所以统计起来非常麻烦。既然题目要求的是每个增量不超过m,那为什么不从增量的角度考虑呢?题目"$m*(k-1) \leqslant n$"就是在提示这一点。

有了这个保证,我们可以确定合法的增量序列数为$m^{k-1}$,故共有$m^{k-1}*(k-1)$个数。由于每个数出现次数相同,所以根据等差数列即可求解。

https://blog.csdn.net/xieguofu2014/article/details/50285219

连乘式注意取模!注意取模!注意取模!

 #include<cstdio>
#include<algorithm>
#include<cstring>
typedef long long ll;
using namespace std; ll m,n,k,p,ans; ll ksm(ll a,ll b){
ll res;
for (res=; b; a=(a*a)%p,b>>=)
if (b & ) res=(res*a)%p;
return res;
} int main(){
freopen("seq.in","r",stdin);
freopen("seq.out","w",stdout);
scanf("%lld%lld%lld%lld",&n,&k,&m,&p);
printf("%lld\n",(n%p*ksm(m%p,k-)%p-ksm(m%p,k-)*(k-)%p*(((m+)*m/)%p)%p+p)%p);
return ;
}

[BZOJ3142][HNOI2013]数列(组合数学)的更多相关文章

  1. BZOJ3142 HNOI2013数列(组合数学)

    考虑差分序列.每个差分序列的贡献是n-差分序列的和,即枚举首项.将式子拆开即可得到n*mk-1-Σi*cnt(i),cnt(i)为i在所有差分序列中的出现次数之和.显然每一个数出现次数是相同的,所以c ...

  2. BZOJ3142 [Hnoi2013]数列 【组合数学】

    题目链接 BZOJ3142 题解 题意:选一个正整数和\(K - 1\)个\([1,M]\)中的数,使得总和小于等于\(N\),求方案数模\(P\) 题目中\(K(M - 1) < N\)的限制 ...

  3. BZOJ3142 [Hnoi2013]数列

    Description 小 T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察 到:除第一天外每天的股价都 ...

  4. bzoj千题计划293:bzoj3142: [Hnoi2013]数列

    http://www.lydsy.com/JudgeOnline/problem.php?id=3142 如果已知数列的差分数列a[1]~a[k-1] 那么这种差分方式对答案的贡献为 N-Σ a[i] ...

  5. [BZOJ3142][HNOI2013]数列(组合)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3142 分析: 考虑差值序列a1,a2,...,ak-1 那么对于一个确定的差值序列,对 ...

  6. bzoj3142[Hnoi2013]数列 组合

    Description 小 T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察 到:除第一天外每天的股价都 ...

  7. Luogu P3228 HNOI2013 数列 组合数学

    题面 看了题解的推导发现其实并不复杂,但是如果你想要用多项式或者组合数求解的话,就GG了 其实如果把式子列出来的话,不需要怎么推导就能算出来,关键是要想到这个巧妙的式子. 设\(b_i=a_{i+1} ...

  8. 【BZOJ3142】[HNOI2013]数列(组合计数)

    [BZOJ3142][HNOI2013]数列(组合计数) 题面 BZOJ 洛谷 题解 唯一考虑的就是把一段值给分配给\(k-1\)天,假设这\(k-1\)天分配好了,第\(i\)天是\(a_i\),假 ...

  9. 【BZOJ3142】[HNOI2013]数列

    [BZOJ3142][HNOI2013]数列 题面 洛谷 bzoj 题解 设第\(i\)天的股价为\(a_i\),记差分数组\(c_i=a_{i+1}-a_i\) 则 \[ Ans=\sum_{c_1 ...

随机推荐

  1. 表格标签(table、行、列、表头)

    表格标签 一.<table> <table>代表表格标签.   <table></table> 1.width  表示表格宽度,宽度表达方式有像素和百分 ...

  2. CodeForces - 1015D

    There are nn houses in a row. They are numbered from 11 to nn in order from left to right. Initially ...

  3. 【译】第二篇 SQL Server代理作业步骤和子系统

    本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...

  4. C - Contest Setting Gym - 101982C dp 补题

    题目链接:https://vjudge.net/contest/273260#problem/C 学习了一下别人的思路,首先去重,然后离散化. dp数组开二维,每一次更新,状态转移方程,dp[ i ] ...

  5. Linux实用命令之xdg-open

    为什么要介绍 xdg-open 呢,得先从需求说起. 一般在控制台中,可以使用命令操作各式文本文件.但难以避免,需要操作一些非文本文件,如 pdf,doc 等. 此时,一般的做法是,打开文件管理器,再 ...

  6. fullpage.js 具体使用方法

    1.fullpage.js  下载地址 https://github.com/alvarotrigo/fullPage.js 2.fullPage.js 是一个基于 jQuery 的插件,它能够很方便 ...

  7. mac上卸载mysql

    在终端输入一下命令 sudo rm /usr/local/mysqlsudo rm -rf /usr/local/mysql*sudo rm -rf /Library/StartupItems/MyS ...

  8. LightOJ 1370- Bi-shoe and Phi-shoe (欧拉函数)

    题目大意:一个竹竿长度为p,它的score值就是比p长度小且与且与p互质的数字总数,比如9有1,2,4,5,7,8这六个数那它的score就是6.给你T组数据,每组n个学生,每个学生都有一个幸运数字, ...

  9. MongoDB权威指南--笔记

    mongodb并不具备一些在关系型数据库中很普遍的功能,如连接和复杂的多行事务. 集合-->文档-->id id在文档所属的集合中是唯一的. db.help()查看数据库级别的帮助,db. ...

  10. Linux下进程信息/proc/pid/status的深入分析

    https://blog.csdn.net/beckdon/article/details/48491909