//By SiriusRen
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=;
struct Node{int a,p;}node[N];
bool operator<(Node a,Node b){return a.p<b.p;}
char pr[]={,,,,,,,};
int n,p,f[N][N],dp[N][N][],ans;
void div(int x){
int cpy=x;
for(int i=;i<;i++)
if(!(x%pr[i])){
while(x%pr[i]==)x/=pr[i];
node[cpy].a|=<<i;
}
node[cpy].p=x;
}
int main(){
scanf("%d%d",&n,&p);
for(int i=;i<=n;i++)div(i);
sort(node+,node++n),f[][]=;
for(int i=;i<=n;i++){
if(node[i].p==||node[i].p!=node[i-].p)
for(int j=;j<;j++)
for(int k=;k<;k++)
dp[j][k][]=dp[j][k][]=f[j][k];
for(int j=;~j;j--)
for(int k=;~k;k--){
if(!(node[i].a&k))(dp[j|node[i].a][k][]+=dp[j][k][])%=p;
if(!(node[i].a&j))(dp[j][k|node[i].a][]+=dp[j][k][])%=p;
}
if(node[i].p==||node[i].p!=node[i+].p)
for(int j=;~j;j--)
for(int k=;~k;k--)
f[j][k]=((dp[j][k][]+dp[j][k][]-f[j][k])%p+p)%p;
}
for(int i=;i<;i++)for(int j=;j<;j++)if(!(i&j))(ans+=f[i][j])%=p;
printf("%d\n",ans);
}

UOJ 129/BZOJ 4197 寿司晚宴 状压DP的更多相关文章

  1. NOI 2015 寿司晚宴 (状压DP+分组背包)

    题目大意:两个人从2~n中随意取几个数(不取也算作一种方案),被一个人取过的数不能被另一个人再取.两个人合法的取法是,其中一个人取的任何数必须与另一个人取的每一个数都互质,求所有合法的方案数 (数据范 ...

  2. BZOJ 4197 NOI 2015 寿司晚宴 状压DP

    4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 694  Solved: 440[Submit][Status] ...

  3. BZOJ 4197: [Noi2015]寿司晚宴 状压dp+质因数分解

    挺神的一道题 ~ 由于两个人选的数字不能有互质的情况,所以说对于一个质因子来说,如果 1 选了,则 2 不能选任何整除该质因子的数. 然后,我们发现对于 1 ~ 500 的数字来说,只可能有一个大于 ...

  4. 【BZOJ-4197】寿司晚宴 状压DP

    4197: [Noi2015]寿司晚宴 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 694  Solved: 440[Submit][Status] ...

  5. [NOI2015]寿司晚宴 --- 状压DP

    [NOI2015]寿司晚宴 题目描述 为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴. 小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n−1种不同的寿 ...

  6. 【BZOJ4197】[Noi2015]寿司晚宴 状压DP+分解质因数

    [BZOJ4197][Noi2015]寿司晚宴 Description 为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴.小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴 ...

  7. B4197 [Noi2015]寿司晚宴 状压dp

    这个题一开始想到了唯一分解定理,然后状压.但是显然数组开不下,后来想到每个数(n<500)大于19的素因子只可能有一个,所以直接单独存就行了. 然后正常状压dp就很好搞了. 题干: Descri ...

  8. bzoj4197 [Noi2015]寿司晚宴——状压DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4197 首先,两个人选的数都互质可以看作是一个人选了一个数,就相当于选了一个质因数集合,另一个 ...

  9. [NOI2015]寿司晚宴——状压dp

    题目转化:将2~n的数分成两组,可以不选,使得这两组没有公共的质因子.求方案数. 选择了一个数,相当于选择了它的所有质因子. 30分: 发现,n<=30的时候,涉及到的质因子也就10个.2,3, ...

随机推荐

  1. Python 函数 day3

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...

  2. 手把手从python安装到setuptools、pip工具安装

    一.python安装1.基础开发库 apt-get install gccapt-get install openssl libssl-dev 2.安装数据库和开发库 apt-get install ...

  3. SDWC 2018 day5

    望得分:100+100+100 实际得分:100+100+100 Problem 1 晨跑(running.cpp/c/pas)[题目描述]为了响应学校的号召,模范好学生王队长决定晨跑.不过由于种种原 ...

  4. uva 1586 Molar mass(Uva-1586)

    这题做的相当的复杂...之前做的现在应该能简单一点了写的. 我的代码: #include <bits/stdc++.h> using namespace std; main() { int ...

  5. UTL

    在PL/SQL中,UTL_FILE包提供文本文件输入和输出功能. 可以访问的目录通过初始化参数UTL_FILE_DIR设置. 注意:UTL_FILE只能读取服务器端文本文件,不能读取二进制文件.这时候 ...

  6. C#学习笔记_08_面向对象

    08_面向对象 面向对象:一种看待问题解决问题的思维方式,着眼点在于找到一个能够帮助我们解决问题的实体,然后委托这个实体来帮我们解决问题:(在面向对象之前你要有一个女朋友,否则代码会经常出现bug) ...

  7. 第五节:numpy之数组维度处理

  8. 1 Ipython、Jupyter 入门

    为什么使用Python进行数据分析:     1 Python大量的库为数据分析和处理提供了完整的工具集     2 比起R和Matlab等其他主要用于数据分析的编程语言,Python更全能     ...

  9. hdu_1065_I Think I Need a Houseboat_201311160023

    I Think I Need a Houseboat Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

  10. PHP array_diff_assoc()

    定义和用法 array_diff_assoc() 函数返回两个数组的差集数组.返回的数组的元素都取自被比较的数组(既第一个数组). 和 array_diff() 函数 不同,本函数要求键名和键值都进行 ...