题面

定情信物

题解

  这题主要考高中物理和数学。

  首先定义 \(f[i][j]\) 表示 \(i\) 维超立方体中第 \(j\) 维元素的数量,根据实际意义,我们可以推出递推式: \(f[i][j]=2\cdot f[i-1][j]+f[i-1][j-1]\) 。

   \(i\) 维超立方体是由 \(i\!-\!1\) 维超立方体平移得来的,那么第 \(j\) 维元素来源为原来的第 \(j\) 维元素并复制了一份,加上原来的第 \(j\!-\!1\) 维元素通过平移而新构成了一部分。——Ezio

  然后我们考虑其组合意义,发现 \(f[i][j]\) 表示把 \(i\) 个元素分为 \(j\) 份,每份第一个元素贡献为 \(1\) ,其它元素贡献为 \(2\) 。那么我们就可以定义 \(g[i][j]\) 表示把 \(i\) 个元素分为 \(j\) 份,每个元素贡献都为 \(2\) ,也就是说 \(g[i][j]=2^i\cdot C_i^j\) ,并且有 \(g[i][j]=2^j\cdot f[i][j]\) ,那么 \(f[i][j]=2^{i-j}\cdot C_i^j\) ,然后就能直接算了,注意要用 \(\text{Lucas}\) 。

代码

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
const int maxn=1e7+3;
int n,MOD;
int bin[maxn];
int Fac[maxn];
int Inv[maxn];
inline int Pow(int x,int k){
int ans=1;
for(;k;x=x*1ll*x%MOD,k>>=1)
if(k&1)ans=ans*1ll*x%MOD;
return ans;
}
inline int C(int n,int m){return Fac[n]*1ll*Inv[m]%MOD*Inv[n-m]%MOD;}
inline int Lucas(int n,int m){
if(n<MOD && m<MOD)
return n<m ? 0 : C(n,m);
const int nn=n%MOD,mm=m%MOD;
return nn<mm ? 0 : C(nn,mm)*1ll*Lucas(n/MOD,m/MOD)%MOD;
}
int main(){
scanf("%d%d",&n,&MOD);
int M=std::min(MOD-1,n);
for(int i=Fac[0]=1;i<=M;++i)
Fac[i]=Fac[i-1]*1ll*i%MOD;
Inv[M]=Pow(Fac[M],MOD-2);
for(int i=M-1;~i;--i)
Inv[i]=Inv[i+1]*1ll*(i+1)%MOD;
for(int i=bin[0]=1;i<=n;++i)
bin[i]=(bin[i-1]<<1)%MOD;
int ans=0;
for(int i=0;i<=n;++i)
ans^=bin[n-i]*1ll*Lucas(n,i)%MOD;
printf("%d\n",ans);
return 0;
}

[BZOJ 3823]定情信物的更多相关文章

  1. bzoj 3823: 定情信物 线性筛逆元

    3823: 定情信物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 108  Solved: 2[Submit][Status] Descriptio ...

  2. 定情信物(bzoj 3823)

    Description 都说程序员找不到妹子,可是无人知晓,三生石上竟然还刻着属于小 E 的一笔. 那一天,小 E 穷尽毕生的积蓄,赠与了妹子一个非同寻常的定情信物.那是一个小 小的正方体,但透过它, ...

  3. BZOJ3823 : 定情信物

    n维超立方体有$2^{n-i}C_n^i$个i维元素,于是$O(n)$预处理出1到n的逆元,再$O(n)$计算即可. 注意Trick:P可能小于n,所以要将数字表示成$a\times P^b$的形式. ...

  4. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  5. 洛谷 P2111 考场奇遇

    P2111 考场奇遇 题目背景 本市的某神校里有一个学霸,他的名字叫小明(为了保护主人公的隐私,他的名字都用“小明”代替).在这次的期中考试中,小明同学走桃花运,在考场上认识了一位女生,她的名字叫小红 ...

  6. 深入理解分布式系统的2PC和3PC

    协调者 在分布式系统中,每一个机器节点虽然都能明确的知道自己执行的事务是成功还是失败,但是却无法知道其他分布式节点的事务执行情况.因此,当一个事务要跨越多个分布式节点的时候(比如,淘宝下单流程,下单系 ...

  7. VB调用存储过程 - CreateParameter 方法

    这次又转为VB6了.......  (┬_┬) ---------------------------------------------------------------------------- ...

  8. Servlet基本_Filter

    1.概念・サーブレットフィルタとは.サーブレットやJSPの「共通の前後処理」を記述するための仕組みです.・フィルタはサーブレットやJSPの前に位置し.実行前と後に.リクエスト.レスポンスに対して任意の ...

  9. NO.008-2018.02.13《折桂令·春情》元代:徐再思

    折桂令·春情_古诗文网   折桂令·春情 元代:徐再思 平生不会相思,才会相思,便害相思.生下来以后还不会相思,才刚刚懂了什么是相思,却深受着相思之苦. 身似浮云,心如飞絮,气若游丝.身像飘浮的云,心 ...

随机推荐

  1. ssh密钥的分发之一:ssh-copy-id

    ssh密钥的分发 我们在使用客户端账号对主机记性管理的时候,可以分为以下两种情况: .第一种情况,直接使用root账号: 优点:使用root账号密钥分发简单,指令执行简单 缺点:不安全 .第二种情况, ...

  2. Calculation 2 HDU - 3501

    https://vjudge.net/problem/HDU-3501 不会做啊...记一下做法 做法是计算小于n且与n互质的数的和:根据如果gcd(i,n)==1,那么gcd(n-i,n)==1,对 ...

  3. 阻止默认行为是配合passive使用

    在使用lighthouse检测pwa应用时,发现提示下面有下面的警告 默认使用passive:true提高滚动性能并减少崩溃,passive即顺从的,是指它顺从浏览器的默认行为.设置该属性的目的主要是 ...

  4. C# 部分命名规则

    接触C#开发已经四个月,整理下C#中的命名规则: 一:变量的命名规则(和Java相似) 1.变量名由字母.数字.下划线组成 2.变量名开头只能以字母.下划线开头,不能以数字开头 3.区分大小写 4.命 ...

  5. Properties没有被注意的地方

    源起: 今天阅读源码时发现一个地方不理解: 为什么以下代码第10行 get() 之后value为null时还去 getProperty() 呢? org.springframework.util.Co ...

  6. viewport实现html页面动态缩放/meta viewport/viewport

    页面默认缩放比例为1,最小宽度为375px,在小于375px出现水平滚动条的时候重新计算显示比例缩小界面, <!DOCTYPE html> <html lang="en&q ...

  7. 《精通css》笔记

    第2章    选择器,注释 1.要知道常用选择器(id选择器,类选择器,类型选择器,后代选择器,伪类选择器(文档结构之外)) 通用选择器(*{    }) 高级选择器(子选择器,相邻同胞选择器,属性选 ...

  8. linux下自定义pid实现任意数据采集

    当你需要采集特殊的数据,而不满足于现有的你所知的数据模版时,自定义oid将是你必须而且非常好的解决方式. oid是snmp服务器为每条系统信息提供的唯一标识符,如果不能很好理解snmp服务的话,可以将 ...

  9. mysql出错排查

    1,例如:Can't connect to local MySQL server through socket '/tmp/mysql-5.5.37.sock' (2) Mysql链接出错,请配置/A ...

  10. 分类IP地址(A、B、C类)的指派范围、一般不使用的特殊IP地址

    分类IP地址(A.B.C类)的指派范围.一般不使用的特殊IP地址 A类地址:0开头,8位网络号 B类地址:10开头,16位网络号 C类地址:110开头,24位网络号 D类地址:1110开头,多播地址 ...