博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Luogu】P3228数列(数学题)
阅读量:4580 次
发布时间:2019-06-09

本文共 1090 字,大约阅读时间需要 3 分钟。

  

  考虑我们把所有的增加量拿出来做成一个序列b。

  那么在所有n中开头中$1~\sum\limits_{i=1}^{k-1}b[i]$是合法的

  也就是说我们枚举所有b[i],然后答案就是$n*m^{k-1}-\sum\sum b[i]$

  后面那个“对所有可能的序列b的序列和求和”怎么算呢?

  考虑到题目中神奇的限制m*(k-1)<n,也就是说b序列的任意一位1~m都是随便取的

  因此等差数列求1~m前缀和乘上每个数出现的次数即可。

#include
#include
#include
#include
#include
using namespace std;inline long long read(){ long long num=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-') f=-1; ch=getchar(); } while(isdigit(ch)){ num=num*10+ch-'0'; ch=getchar(); } return num*f;}long long n,m,e,mod;long long Pow(long long a,long long b){ long long ret=1; while(b){ if(b&1) ret=ret*a%mod; a=a*a%mod; b>>=1; } return ret;}int main(){ n=read(),e=read(),m=read(),mod=read(); long long ans=(n%mod)*Pow(m,e-1)%mod; long long now=(1+m)*m/2%mod*(e-1)%mod*Pow(m,e-2); printf("%lld\n",((ans-now)%mod+mod)%mod); return 0;}

 

转载于:https://www.cnblogs.com/cellular-automaton/p/8983918.html

你可能感兴趣的文章
记录利用ettercap进行简单的arp欺骗和mitm攻击过程
查看>>
POJ2632
查看>>
HDU2859 Phalanx (动态规划)
查看>>
求助 页面布局哪里错了
查看>>
MySQL 存储过程
查看>>
2017湖湘杯Writeup
查看>>
iOS:城市级联列表的使用
查看>>
C# Dictionary与List的相互转换
查看>>
扭曲效果
查看>>
C++ DateTime 结构
查看>>
16 3Sum Closest
查看>>
六款值得推荐的android(安卓)开源框架简介
查看>>
JDBC基础
查看>>
关于同余与模运算的总结
查看>>
Python——Scrapy爬取链家网站所有房源信息
查看>>
洛谷 P3804 [模板] 后缀自动机
查看>>
Python排序算法之选择排序
查看>>
IOS之pageControl
查看>>
.net后台弹出提示消息代码
查看>>
【转载】perl接受传递参数的方法
查看>>