「HNOI 2013」数列
题目链接
\(Solution\)
这道题貌似并不难的样子\(QAQ\)
我们发现这个因为有首项的关系所以有点不太好弄.所以我们要将这个首项对答案的影响给去掉.
我们可以构建一个差分数组,我们令他等于\(a[1],a[2]...a[k-1]\)
则一个差分数组对答案的贡献为:
\]
然后我们一共有\(m^(k-1)\)个这样的查分数组,所以总贡献为:
\]
我们将\(n\)提出来,式子变为:
\]
所以现在只需要化简后面的式子了.
枚举一些数发现(实际上是我不会证明)
发现在区间\([1,m]的数每个数出现的个数相同\)
至于怎么发现的,打表找规律啊.
这样的话,每个数出现的次数就可以确定了:
\(m^{k-1}\)个数组,每个数组\((k-1)\)个数,
则每个数的个数为:
\]
\]
然后后面式子的值就只需要用这个数乘上\(1+2+3+...+m的值了\)
所以后面式子实际上就是:
\]
所以最终答案为:
\]
注意取模的问题啊,好坑!!!
\(Code\)
#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x*f;
}
int ksm(int a,int b,int mod){
int ans=1;
while(b){
if(b&1)
ans=a*ans%mod;
a=a*a%mod;
b>>=1;
}
return ans%mod;
}
main(){
int n=read(),k=read(),m=read(),p=read();
printf("%lld",(n%p*ksm(m,k-1,p)%p-ksm(m,k-2,p)*(k-1)%p*((1+m)*m/2%p)%p+p)%p);
}
「HNOI 2013」数列的更多相关文章
- 「HNOI 2013」游走
题目链接 戳我 \(Solution\) 首先申明几个变量: f[x]:到点x的概率, vis[x]:x点的度 dp[x][y]:(x,y)这条边的概率 number[x][y]:x这条边的编号 下面 ...
- 「HNOI 2013」比赛
题目链接 戳我 \(Solution\) 这道题观察数据范围发现很小,再看看题目可以发现是搜索. 这题纯搜索会\(T\)所以要加入适当剪枝 如果一个人后面的比赛都赢却依旧到不了目标分数,则直接\(re ...
- 「HNOI 2013」消毒
题目链接 戳我 \(Solution\) 我们首先想一想如果这一题只是二维的该怎么办? 就是一个最小点覆盖问题.这里就不详细解释了,用网络流或匈牙利都无所谓. 但现在是三维的,那么现在该如何处理呢? ...
- LOJ#3054. 「HNOI 2019」鱼
LOJ#3054. 「HNOI 2019」鱼 https://loj.ac/problem/3054 题意 平面上有n个点,问能组成几个六个点的鱼.(n<=1000) 分析 鱼题,劲啊. 容易想 ...
- 「Luogu P2201」数列编辑器 解题报告
数列编辑器,在线IDE 本期的主题是洛谷的在线IDE 小学生?!小学生虐我
- 「CTSC 2013」组合子逻辑
Tag 堆,贪心 Description 给出一个数列 \(n\) 个数,一开始有一个括号包含 \([1,n]\),你需要加一些括号,使得每个括号(包括一开始的)所包含的元素个数 \(\leq\) 这 ...
- 「10.29」数列(exgxd)·数对(线段树优化DP)·最小距离(最短路,树上直径思想)
好久没碰到这么友好乱搞的题了.... A. 数列 考察的是exgcd的相关知识,最后的答案直接O(1)求即可 B. 数对 本来以为是原题,然后仔细看了看发现不是,发现不会只好乱搞骗分了 事实上直接按$ ...
- 「HNOI 2019」白兔之舞
一道清真的数论题 LOJ #3058 Luogu P5293 题解 考虑$ n=1$的时候怎么做 设$ s$为转移的方案数 设答案多项式为$\sum\limits_{i=0}^L (sx)^i\bin ...
- 「HNOI 2016」 序列
\(Description\) 给你一个序列,每次询问一个区间,求其所有子区间的最小值之和 \(Solution\) 这里要用莫队算法 首先令\(val\)数组为原序列 我们考虑怎么由一个区间\([l ...
随机推荐
- html 中的media属性
在css中我们使用media标签来区分调用哪个css样式,比如使用media="print"来表示当执行打印文档时,使用print.css样式.这样使得文档更有得于打印,如将页面宽 ...
- 关于电信4Gapn设置问题
最近买了一台美版V版的LG G3 vs985 (感觉名字挺好的985) 就是刷完官方原版系统之后没有办法上网 在网上找了很多帖子 ,最后发现是 apn没有设置(汗) 终于找到了电信4G apn的设置方 ...
- linux 系统的后台运行
后台运行:nohup 程序名 & 杀死后台 ps -ef|grep 名称 kill -9 id(查出的程序id)
- 前端开发之JavaScript基础篇一
主要内容: 1.JavaScript介绍 2.JavaScript的引入方法和输出及注释 3.javaScript变量和命名规则 4.五种基本数据类型 5.运算符 6.字符串处理 7.数据类型转换 ...
- ascii编码转utf8编码,适用于python2
def ascii2utf8(ascii): line = eval(("'" + ascii.strip() + "'")) return line
- JAVA中List的几个方法
add()方法.插入某个位置的数据,他有两个参数一个参数是下标,一个参数是元素.需要注意的是下标大小应该小于等于List集合大小,否则就会抛出下标越界异常! 代码: public static ...
- 【LA3523 训练指南】圆桌骑士 【双连通分量】
题意 有n个骑士经常举行圆桌会议,商讨大事.每次圆桌会议至少应有3个骑士参加,且相互憎恨的骑士不能坐在圆桌旁的相邻位置.如果发生意见分歧,则需要举手表决,因此参加会议的骑士数目必须是奇数,以防赞同和反 ...
- 修改 cmd 控制台字体、巧用 FontLink 使中英文独立设置
众所周知,Windows 中 cmd 控制台窗口的字体难看,但是修改注册表是可以实现修改其字体的,但很多很棒的编程字体是没有中文的,所以在显示中文时直接调用了宋体,这绝妙的反差实在是 不忍直视.但是, ...
- Struts2项目走向流转
----------------siwuxie095 Struts2 项目走向流转 1.HTTP 请求流转过程 2.配置文件连接点详解 [made by siwuxie095]
- Java-实体与集合转换
import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector ...