3142:[HNOI2013]数列 - BZOJ
题目描述 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的更多相关文章
- 【BZOJ】3142: [Hnoi2013]数列
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3142 12年也有一个组合数学...(这几年的画风啊.... 考虑直接去做:DP? DP+容 ...
- bzoj 3142: [Hnoi2013]数列
Description 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到:除第一天外每天的股价都比前 ...
- [BZOJ3142][HNOI2013]数列(组合数学)
3142: [Hnoi2013]数列 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1721 Solved: 854[Submit][Status][ ...
- 【BZOJ3142】[HNOI2013]数列(组合计数)
[BZOJ3142][HNOI2013]数列(组合计数) 题面 BZOJ 洛谷 题解 唯一考虑的就是把一段值给分配给\(k-1\)天,假设这\(k-1\)天分配好了,第\(i\)天是\(a_i\),假 ...
- 【BZOJ3142】[HNOI2013]数列
[BZOJ3142][HNOI2013]数列 题面 洛谷 bzoj 题解 设第\(i\)天的股价为\(a_i\),记差分数组\(c_i=a_{i+1}-a_i\) 则 \[ Ans=\sum_{c_1 ...
- [洛谷P3228] [HNOI2013]数列
洛谷题目链接:[HNOI2013]数列 题目描述 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到: ...
- bzoj千题计划293:bzoj3142: [Hnoi2013]数列
http://www.lydsy.com/JudgeOnline/problem.php?id=3142 如果已知数列的差分数列a[1]~a[k-1] 那么这种差分方式对答案的贡献为 N-Σ a[i] ...
- [BZOJ3142][HNOI2013]数列(组合)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3142 分析: 考虑差值序列a1,a2,...,ak-1 那么对于一个确定的差值序列,对 ...
- BZOJ3142 [Hnoi2013]数列
Description 小 T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察 到:除第一天外每天的股价都 ...
随机推荐
- 集合类学习之HashMap
一.HashMap概述 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap ...
- 依赖映射 Dependent Mapping
让一个类为其子类(泛意上的)执行DB映射 一些对象肯定会出现在另一对象的上下文中. 此时,使用另一对象的Mapper来执行第一个对象的映射,来简化映射过程. 运行机制 在DB持久化时,依赖者类依赖于所 ...
- 4月12日学习笔记——jQuery事件
下面是在 jQuery 中最常使用的 bind()方法举例:$("#testDiv4").bind("click", showMsg); 我们为 id 是 te ...
- C# 中有关 using 关键字
关于 C# 中的 using 关键字 我们往往只在代码的开头使用 using 关键字来引入名称空间,这是 using 的一个最常见的使用. 但是,using 关键字是否只有这么一处用武之地吗? 下面, ...
- 【风马一族_git_github】git与github的英文记录
Pull requests Issues Gist 请求 问题 要点 ---------------------------------------------------------------- ...
- c++11:copy_n
copy_n: Copies exactly count values from the range beginning at first to the range beginning at resu ...
- Bootstrap轮播(carousel)插件中图片变形的终极解决方案——使用jqthumb.js
在顶求网的首页中我使用了BootStrap的轮播(carousel)插件来展示文章中的图片.我在程序中自动抓取文章的第一张图片作为该轮播控件中要显示的图片,由于文章的图片大小不一,而轮播插件的大小基本 ...
- 如何在java类中读取Properties配置文件
在com.example包下有一个test.properties文件和测试类PropertyReadTest.java. test.properties 文件内容: author=zeige tea ...
- IIFE-js中(function(){…})()立即执行函数写法理解
介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>)和其他jQuery插件经常看到如下的 ...
- wxPython + Boa 练习程序
最近需要做点支持linux的跨平台gui,网上查到了wxPython及Boa,感觉不错,照着Boa文档做做练习. 代码: App: #!/usr/bin/env python #Boa:App:Boa ...