题目描述 Description
小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨。
股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N。在疯涨的K天中小T观察到:除第一天外每天的股价都比前一天高,且高出的价格(即当天的股价与前一天的股价之差)不会超过M,M为正整数。并且这些参数满足M(K-1)
小T忘记了这K天每天的具体股价了,他现在想知道这K天的股价有多少种可能。
输入描述 Input Description
输入文件只有一行用空格隔开的四个数:N、K、M、P。对P的说明参见后面“输出格式”中对P的解释。
输入保证20%的数据M,N,K,P≤20000,保证100%的数据M,K,P≤109,N≤1018。
输出描述 Output Description
仅包含一个数,表示这 K 天的股价的可能种数对于 P 的模值。
样例输入 Sample Input
7 3 2 997
样例输出 Sample Output
16
数据范围及提示 Data Size & Hint
输出样例的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}。

看了题解,原来这道题这么简单,考试的时候我在干嘛啊(我记得推了半天推出了一个错误的公式)
我们可以枚举每两天的差值,对于每一个差值序列a[1],a[2],...,a[k-1]
有N-a[1]-a[2]-...-a[k-1]种方法,然后求和
因为N>M(K-1),所以一共有M^(K-1)个不同的序列
ans加上一个N*M^(K-1),再考虑减法的部分
M^(K-1)个数列一共有M^(K-1)*(K-1)个数字,1到M出现次数是一样的,为M^(K-2)*(K-1)
所以ans减去M^(K-1)*(K-1)*(M+1)/2
ans=N*M^(K-1)-M^(K-1)*(K-1)*(M+1)/2
剩下的就是乱搞了....

 var
n,k,m,p,x:int64; function f(x,y:int64):int64;
begin
if y= then exit();
f:=f(x,y>>);
f:=f*f mod p;
if y and = then f:=f*x mod p;
end; begin
read(n,k,m,p);
x:=((m mod p)*(n mod p)-(m*(m+)>> mod p)*(k-))mod p;
if x< then x:=x+trunc(abs(x)/p)*p+p;
x:=x mod p;
writeln(f(m,k-)*x mod p);
end.

3142:[HNOI2013]数列 - BZOJ的更多相关文章

  1. 【BZOJ】3142: [Hnoi2013]数列

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3142 12年也有一个组合数学...(这几年的画风啊.... 考虑直接去做:DP? DP+容 ...

  2. bzoj 3142: [Hnoi2013]数列

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

  3. [BZOJ3142][HNOI2013]数列(组合数学)

    3142: [Hnoi2013]数列 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1721  Solved: 854[Submit][Status][ ...

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

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

  5. 【BZOJ3142】[HNOI2013]数列

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

  6. [洛谷P3228] [HNOI2013]数列

    洛谷题目链接:[HNOI2013]数列 题目描述 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到: ...

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

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

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

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

  9. BZOJ3142 [Hnoi2013]数列

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

随机推荐

  1. 解决$_REQUEST['name']Undefined问题

    最近按照w3school一步一步学php,当学到$_REQUEST的时候,依旧按照w3cshool所提供的代码自己手敲了一遍,代码如下: <html> <body> <f ...

  2. .NET打印功能实现 PrintDocument

    //打印按钮 private void btnPrint_Click(object sender, EventArgs e) { if (this.printDialog1.ShowDialog() ...

  3. ebay的api的开发技术笔记

    使用eBay API基本步骤介绍 要开始使用eBay API,需要如下基本步骤: 1.    注册开发帐号: https://developer.ebay.com/join/Default.aspx ...

  4. css3 画x图形

    .m-act-del{ right:; top:; margin-top: -6px; position: absolute; display: inline-block; width: 20px; ...

  5. 进程通信---FIFO

    管道没有名字,所以只能在具有血缘关系的进程间使用,而在无名管道发展出来的有名管道FIFO,则有路径名与之相关联,以一种特殊设备文件形式存在于文件系统中,从而允许无亲缘关系的进程访问FIFO,下面看FI ...

  6. cass实体编码列表

    地物名称 编码 图层 类别 参数一 参数二 实体类型 三角点 131100 KZD 20 gc113 3 SPECIAL,1 三角点分数线 131110 KZD 附 LINE 三角点高程注记 1311 ...

  7. 【风马一族_Java】如何获取ACSLL表的值

    消耗两小时,只为一代码. 终于得到了此代码: public class sows { public static void main(String[] args) { byte[] bytes = n ...

  8. PHP时间戳

    strtotime strtotime("Today"); #今天凌晨0点的时间戳 strtotime('now');     #当前时间的时间戳 strtotime ( &quo ...

  9. CodeIgniter(CI 3.0)分页类实践记录

    最近在学习B/S,选择了PHP CI框架作为切入点. 在尝试制作个人CMS的时候遇到了需要分页的情况,网上好像搜不到3.0版本以上的例子,下面附上本地实验的代码,供参考. 数据库情况如下: 首先看Co ...

  10. Silverlight动画的基本知识、关键帧动画

    基础知识 (一)动画:是快速播放一系列图像(其中每个图像与下一个图像略微不同)给人造成的一种幻觉 (二)动画类型:两类    (1)From/To/By动画:在起始值和结束值之间进行动画处理.     ...