[洛谷P3228] [HNOI2013]数列
洛谷题目链接:[HNOI2013]数列
题目描述
小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨。股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N。在疯涨的K天中小T观察到:除第一天外每天的股价都比前一天高,且高出的价格(即当天的股价与前一天的股价之差)不会超过M,M为正整数。并且这些参数满足M(K-1)<N。小T忘记了这K天每天的具体股价了,他现在想知道这K天的股价有多少种可能
输入输出格式
输入格式:
只有一行用空格隔开的四个数:N、K、M、P。对P的说明参见后面”输出格式“中对P的解释。输入保证20%的数据M,N,K,P<=20000,保证100%的数据\(M,K,P<=10^9\) ,\(N<=10^{18}\) 。
输出格式:
仅包含一个数,表示这K天的股价的可能种数对于P的模值。【输入输出样例】
输入输出样例
输入样例#1:
7 3 2 997
输出样例#1:
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}
(个人感觉这题比较神奇,是一道组合的好题)
题解: 直接考虑这个数列是比较麻烦的,但是题目给出了股票价值增长的范围,也就是说,我们可以针对每天股票的值讨论.我们设\(a_i\)表示第\(i\)天与第\(i+1\)天的价值变化,则任意\(a_i\)满足\(a_i\in[1,m]\).
答案可以表示为\(\sum_{所有合法的a数列}(n-\sum_{i=1}^{k-1}a_i)\),也就是说对应某种增长情况的数列有\(n-\sum_{i=1}^{k-1}a_i\)个.并且,题目保证\(m(k-1)<n\),也就是说,$$ans=m{k-1}*(n-\sum_{i=1}{k-1}a_i)$$.
拆一下式子,则有$$ans=m{k-1}*n-m{k-1}\sum_{i=1}^{k-1}a_i$$
再又因为在全排列中所有数字的出现次数都是相同的,也就是说\(1\)~\(m\)这\(m\)个数字总共出现了\(m^{k-1}*(k-1)\)次(因为\(a\)数列的长度是\(k-1\)),平均每个数字出现\(m^{k-2}*(k-1)\)次.也就是我们可以将式子写成这样的形式:$$ans=m{k-1}*n-m{k-2}(k-1)\sum_{i=1}^mi$$.
式子后面半部分套等差数列求和公式:$$ans=m{k-1}*n-m{k-2}(k-1)\frac{m(m-1)}{2}$$.然后就可以快速幂直接求了.
这里有个坑点,就是\(n\)的值乘一个\(int\)范围的值可能会爆\(long \ long\),需要在输入之后就先取一次模.
#include<bits/stdc++.h>
using namespace std;
typedef int _int;
#define int long long
int n, m, k, mod;
int qpow(int x, int n){
int res = 1;
for(; n; x = x*x%mod, n >>= 1)
if(n & 1) (res *= x) %= mod;
return res;
}
_int main(){
cin >> n >> k >> m >> mod; n %= mod;
cout << (qpow(m, k-1)*n%mod-qpow(m, k-2)*((m*(m+1)/2ll)%mod)%mod*(k-1)%mod+mod)%mod << endl;
return 0;
}
[洛谷P3228] [HNOI2013]数列的更多相关文章
- 【洛谷 P1667】 数列 (贪心)
题目链接 对于一个区间\([x,y]\),设这个区间的总和为\(S\) 那么我们在前缀和(设为\(sum[i]\))的意义上考虑到原操作其实就是\(sum[x−1]+=S\) , \(sum[x]+S ...
- 洛谷P1415 拆分数列[序列DP 状态 打印]
题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数.如果有多组解,则输出使得最后一个数最小的同时 ...
- 洛谷P1415 拆分数列(dp)
题目链接:传送门 题目: 题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数.如果有多组解,则输 ...
- 洛谷P1415 拆分数列
题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数.如果有多组解,则输出使得最后一个数最小的同时 ...
- 洛谷 P1415 拆分数列 解题报告
拆分数列 题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数. 如果有多组解,则输出使得最后一个 ...
- 洛谷 P2609 [ZJOI2012]数列 解题报告
P2609 [ZJOI2012]数列 题目描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: A(0)=0 A(1)=1 A(2i)=A(i) (对于任意 i>0 ...
- 洛谷 P2401 不等数列 题解
每日一题 day25 打卡 Analysis dp[i][j]=dp[i-1][j-1]*(i-j)+dp[i-1][j]*(j+1); 其中i和j是表示前i个数中有j个小于号,j<=i-1 要 ...
- 洛谷 P2401 不等数列
其实有两种方法来解这道题# 第一种:找规律(非正经) 一看,这玩意像是个杨辉三角,还左右对称呢 因为新插入一个数$n$,有$n+1$个位置可以选,所以总数就乘$n+1$,对应的$f[n+1][i]$也 ...
- 洛谷P4063 [JXOI2017]数列(dp)
题意 题目链接 Sol 这题想还是不难想的,就是写起来很麻烦,然后去看了一下loj的最短代码表示只能Orz 首先不难发现一条性质:能够选择的区间一定是不断收缩的,而且新的可选区间一定是旧区间的某个位置 ...
随机推荐
- Programming Protocol-Independent Packet Processors
引言 OpenFlow协议固定的包头域数目,使得南向协议过于死板. P4可以实现自定义包头,增加灵活性. P4是OpenFlow未来发展的方向. We propose P4 as a strawman ...
- DP----入门的一些题目(POJ1088 POJ1163 POJ1050)
动态规划入门 DP 基本思想 具体实现 经典题目 POJ1088 POJ1163 POJ1050 (一) POJ1088,动态规划的入门级题目.嘿嘿,连题目描述都是难得一见的中文. 题目分析: 求最长 ...
- String、Date、Calendar之间的转换
1.String.Date.Calendar之间的转换 要用到格式化类SimpleDateFormat package com.rong.se; import java.text.ParseExcep ...
- python 将base64字符串还原为图片
今天弄验证码的时候发现,验证码的图片的src竟然是下面的这么一个一串字符串,吓到,好像不可以http请求的,第一次见,就好尴尬,去网上搜索了一下,说是: 这是Data URI scheme. data ...
- 蜗牛慢慢爬 LeetCode 2. Add Two Numbers [Difficulty: Medium]
题目 You are given two non-empty linked lists representing two non-negative integers. The digits are s ...
- 《高性能JavaScript》学习笔记——日更中
------------------2016-7-20更------------------ 最近在看<高性能JavaScript>一书,里面当中,有讲很多提高js性能的书,正在看的过程中 ...
- maven 实践 :管理依赖
有人认为Maven是一个依赖管理工具,当然这种想法是错误的(确切的说Maven是一个项目管理工具,贯穿了整个项目生命周期,编译,测试,打包,发布...),但Maven给人造成这种错误的印象也是有原因的 ...
- Kafka集群无法外网访问问题解决攻略
Kafka无法集群外网访问问题解决方法 讲解本地消费者和生产者无法使用远程Kafka服务器的处理办法 服务搭建好Kafka服务后,机本.测试 OK,外面机器却无法访问,很是怪异. 环境说明: Ka ...
- RPC和WebService的区别
最近分析的这个系统,逻辑架构中有一层是RPC interface.之前对RPC不熟悉,就上网搜索了一下资料,在此总结一下: RPC是Remote Procedure Calling,远程过程调用的缩写 ...
- IE 之 userData 模拟 localStorage
引 chrome, safari, firefox, ie 9都支持 localStorage. 但可恶的是,中国 ie 6 占有最大的比例. 使用 cookie 不但容量有限,而且给我们增加了不 ...