Description

Alice想要得到一个长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数。Alice还希望
,这n个数中,至少有一个数是质数。Alice想知道,有多少个序列满足她的要求。

Input

一行三个数,n,m,p。
1<=n<=10^9,1<=m<=2×10^7,1<=p<=100

Output

一行一个数,满足Alice的要求的序列数量,答案对20170408取模。
---------------------------------------------------------------此后一千里-------------------------------------------------------------------------
题解 :
你问这题难不难?我就明确告诉你,不难。你问那我为什么要写题解?我就明确告诉你,因为我傻叉去写了矩阵快素幂。
---ihopenot
题解基本已经在前面的引言里了。算出所有合法方案减去没有质数的方案。
然后我就随手一发矩阵快速幂。。。快速幂。。。幂。。。
然而这题用倍增去做每次只用p^2乘起来就可以了。复杂度直接少个p。。。
虽然矩阵也能过。
代码 :(bzoj 18s)

//That's right ,I am killer .
#include<bits/stdc++.h>
#define LL long long
#define eps 1e-9
#define INF 0x3f3f3f3f
using namespace std;#define int int
inline int Max(int a,int b) {return a>b?a:b;}
inline int Min(int a,int b) {return a<b?a:b;}
inline int Sqr(int a) {return a*a;}
inline int Abs(int a) {return a>0?a:-a;}
#undef int#define MAXN 20000007
#define MOD 20170408int n,m,p;struct Matrix{int x[105][105];void Init() {memset(x,0,sizeof(x));}void Out() {for(int i=0;i<p;i++) {for(int j=0;j<p;j++) cout<<x[i][j]<<" ";cout<<endl;}}Matrix operator * (const Matrix &b) const {Matrix ret;ret.Init();for(int i=0;i<p;i++) for(int j=0;j<p;j++)for(int k=0;k<p;k++) ret.x[i][k]=(ret.x[i][k]+(LL) x[i][j]*b.x[j][k])%MOD;return ret;}
}st,tra[2],e;Matrix Fpow(Matrix a,int p) {Matrix ret=e,tmp=a;while(p) {if(p&1) ret=ret*tmp;tmp=tmp*tmp; p>>=1;}return ret;
}int pri[MAXN],cnt;bool mk[MAXN];
int ap[2][105];
void Pre() {    st.x[0][0]=1;for(int i=0;i<p;i++) e.x[i][i]=1;mk[1]=1;for(int i=2;i<=m;i++) {if(!mk[i]) pri[++cnt]=i;for(int j=1;j<=cnt&&i*pri[j]<=m;j++) {mk[i*pri[j]]=1;if(i%pri[j]==0) break;}}for(int i=1;i<=m;i++) {ap[0][i%p]++;ap[1][i%p]+=mk[i] ? 1:0;}for(int k=0;k<p;k++) for(int i=0;i<p;i++) {tra[0].x[(i+k)%p][i]+=ap[0][k];tra[1].x[(i+k)%p][i]+=ap[1][k];}
}int ans;int main() {scanf("%d%d%d",&n,&m,&p);Pre();tra[0]=Fpow(tra[0],n)*st;tra[1]=Fpow(tra[1],n)*st;ans=tra[0].x[0][0]-tra[1].x[0][0];ans=(ans+MOD)%MOD;printf("%d\n",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/ihopenot/p/6707542.html

Bzoj4818--Sdoi2017序列计数相关推荐

  1. 2019.02.11 bzoj4818: [Sdoi2017]序列计数(矩阵快速幂优化dp)

    传送门 题意简述:问有多少长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数,且其中至少有一个数是质数,答案对201704082017040820170408取模(n≤1e9, ...

  2. BZOJ4818 [SDOI2017] 序列计数 【矩阵快速幂】

    题目分析: 一个很显然的同类项合并.注意到p的大小最大为100,考虑把模p意义下相同的求出来最后所有的减去没有质数的做矩阵快速幂即可. 代码: 1 #include<bits/stdc++.h& ...

  3. bzoj 4818: [Sdoi2017]序列计数(DP+矩阵快速幂)

    4818: [Sdoi2017]序列计数 Time Limit: 30 Sec  Memory Limit: 128 MB Submit: 769  Solved: 463 [Submit][Stat ...

  4. Luogu3702 SDOI2017 序列计数 矩阵DP

    传送门 不考虑质数的条件,可以考虑到一个很明显的$DP:$设$f_{i,j}$表示选$i$个数,和$mod\ p=j$的方案数,显然是可以矩阵优化$DP$的. 而且转移矩阵是循环矩阵,所以可以只用第一 ...

  5. 【BZOJ4818】【SDOI2017】序列计数 [矩阵乘法][DP]

    序列计数 Time Limit: 30 Sec  Memory Limit: 128 MB [Submit][Status][Discuss] Description Alice想要得到一个长度为n的 ...

  6. 序列计数(动态规划/自动机/前缀和优化)

    序列计数 对于一个小写字母的序列每次可以将相邻两个不同的小写字母都变为二者之一,可以进行无限次这样的操作,求解可以产生多少种不同的序列. 首先我们不能考虑操作,而是考虑合法序列,显然最后会形成若干个区 ...

  7. loj#2002. 「SDOI2017」序列计数(dp 矩阵乘法)

    题意 题目链接 Sol 质数的限制并没有什么卵用,直接容斥一下:答案 = 忽略质数总的方案 - 没有质数的方案 那么直接dp,设\(f[i][j]\)表示到第i个位置,当前和为j的方案数 \(f[i ...

  8. 蓝桥杯 - 序列计数(记忆化搜索)

    问题描述 小明想知道,满足以下条件的正整数序列的数量: 1. 第一项为 n: 2. 第二项不超过 n: 3. 从第三项开始,每一项小于前两项的差的绝对值. 请计算,对于给定的 n,有多少种满足条件的序 ...

  9. python统计元音总数_python – 元音序列计数

    这不是一个家庭作业问题,而是一个考试准备问题. 我应该定义一个功能音节(单词)来计算音节的数量 用以下方式说一句话: •最大元音序列是一个音节; •单词中的最后一个不是音节(或者是元音序列,它是一个部 ...

最新文章

  1. 你在python项目中遇到的问题_魔法02 Python环境可能遇到的问题及解决方案
  2. 【Linux 内核】线程调度示例一 ③ ( 获取线程优先级 | 设置线程调度策略 | 代码示例 )
  3. python简单的web服务器
  4. python程序设计实验教程 翟萍 第五章答案_Python程序设计实验教程
  5. 数据源名称和 64 位操作系统
  6. 20220129CTF刷题-- WEB方向
  7. By Elevator or Stairs? CodeForces - 1249E(动态规划)
  8. 爱彼迎JavaScript 风格指南
  9. Disconnected from the target VM, address:xxxx 或者 Process finished with exit code 1 终极解决办法 idea
  10. 如何安装html启动器,如何在Spring Boot中创建自己的启动器?
  11. linux中使用u盘和光驱的命令_Linux学习之挂载光盘和U盘(六)
  12. canvas放射粒子效果
  13. 关于log4net 生成多个文件夹的解决方案。
  14. 开源框架Struts:FormBean滴那些事儿
  15. NSSM 注册PYTHON服务
  16. PS CS6启动“不能打开暂存盘文件”的解决方法
  17. c语言中char与static
  18. javascript解决猴子偷桃问题
  19. 珠海横琴凯悦酒店开业
  20. 如何从iPhone的音乐应用程序中删除Apple Music

热门文章

  1. Jira 自定义工作流
  2. C#使用Gecko实现浏览器
  3. 记录:SqlParamater要点小结
  4. JS在火狐浏览器下如何关闭标签?
  5. iptables复习记忆
  6. (Metro学习三)图片uri保存到本地图片库
  7. Boost.Python Tutorial
  8. python多线程下载编程_python多线程下载图片
  9. 阿里巴巴DevOps实践指南 | 数字化转型下,DevOps的根本目标是什么?
  10. 详解数据中台构建核心产品Dataphin“ 规划”能力