Description

都说程序员找不到妹子,可是无人知晓,三生石上竟然还刻着属于小 E 的一笔。

那一天,小 E 穷尽毕生的积蓄,赠与了妹子一个非同寻常的定情信物。那是一个小

小的正方体,但透过它,可以看到过去,可以洞彻天机。

这份信物仿佛一只深邃的眼。当看透它看似简单的外表后,深邃的内心却最是可以

叩击人的灵魂的。不出所料,妹子果然被这个信物超越空间的美所吸引。

“易有太极,是生两仪,两仪生四象,四象生八卦。,八卦定吉凶,吉凶生大业。”

这句箴言在其上得到了完美的诠释。

是的,这正是一个超正方体。

小 E 告诉妹子,他的情意也如这份信物一样深厚。现在妹子想知道,小 E 对她的情

意究竟有几分?

我们知道,点动成线,线动成面,面动成体......即 n 维超立方体可看作由 n-1 维超

立方体沿垂直于它的所有的棱的方向平移得到的立体图形。

我们可以将点看作 0 维超立方体,将直线看作 1 维超立方体,将正方形看作 2 维超

立方体......依此类推。

任何一个 n 维超立方体(n>0)都是由低维的超立方体元素组成的:它的 n-1 维表面

是 n-1 维的超立方体,它的 n-2 维边缘是 n-2 维的超立方体,它的 n-3 维元素是 n-3 维的

超立方体......

小 E 对妹子的情意即为在他的定情信物——K 维超立方体中,含有每一维的元素个

数。由于元素个数可能较大,只需要输出它所包含的每一维元素个数模 P 后的异或和。

Input

两个整数 K、P,详见题目叙述。

Output

一个非负整数,表示小 E 的定情信物所包含的每一维元素个数模 P 后的异或和。注

意:异或和可能会大于 P。

Sample Input

input 1
3 7

Input 2

4 2333

Input 3

12 7723

Sample Output

Output1

3

Output 2

33

Output 3

360

Hint
对于样例2的解释:
一个三维超立方体含有 8 个零维元素、12 个一维元素、6 个二维元素、1 个三维

元素,模 7 后分别为 1,5,6,1,异或和为 1^5^6^1=3。

HINT

对于 100%的数据,N≤10^7,P 为 10^9 内的素数。
/*考虑每个n维超立方体的k维元素的“对角线”向量就是从n维中选出k维,每一维为+1或-1,答案就是C(n,k)*2^k,在预处理出逆元之后可以O(n)。但是由于p可以<n,所以可能要求(b*p)^(-1),这个是没有逆元的,所以维护cnt表示当前答案p有几个,还要注意逆元是rev[tmp%p]。
*/
#include<cstdio>
#include<iostream>
#define lon long long
#define N 10000010
using namespace std;
int n,p;lon inv[N];
void get_inv(){int t=min(n,p-1);inv[1]=1;for(int i=2;i<=t;i++)inv[i]=inv[p%i]*(p-p/i)%p;
}
lon poww(lon a,int b){lon ans=1;while(b){if(b&1) ans=ans*a%p;a=a*a%p;b>>=1;}return ans%p;
}
int main(){scanf("%d%d",&n,&p);if(p==2){printf("1\n");return 0;}get_inv();lon ans=poww(2,n);lon sum=ans,cnt=0;for(int i=1;i<=n;i++){int tmp=n-i+1;while(tmp%p==0) cnt++,tmp/=p;ans=ans*tmp%p;tmp=i;while(tmp%p==0) cnt--,tmp/=p;ans=ans*inv[tmp%p]%p;ans=ans*inv[2]%p;sum^=cnt?0:ans;}printf("%d\n",sum);return 0;
}

转载于:https://www.cnblogs.com/harden/p/6517234.html

定情信物(bzoj 3823)相关推荐

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

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

  2. [BZOJ 3823]定情信物

    题面 定情信物 题解 这题主要考高中物理和数学. 首先定义 \(f[i][j]\) 表示 \(i\) 维超立方体中第 \(j\) 维元素的数量,根据实际意义,我们可以推出递推式: \(f[i][j]= ...

  3. BZOJ 3823: 定情信物

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

  4. 3823: 定情信物【递推】【线性筛逆元】【带推导过程】

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

  5. 大概是全网最详细的Electron ipc 讲解(三)——定情信物传声筒port

    希沃ENOW大前端 公司官网:CVTE(广州视源股份) 团队:CVTE旗下未来教育希沃软件平台中心enow团队 「本文作者:」 前言 本系列共有以下几个章节: 主进程与渲染进程的两情相悦 渲染进程与渲 ...

  6. 【bzoj3823】【定情信物】【递推】

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

  7. 【逆元】【bzoj 3823】: 定情信物

    http://www.lydsy.com/JudgeOnline/problem.php?id=3823 mhy: 网上题解1mol多,基本没什么可以过5 3这组数据的.... 对于n维的情况,我们可 ...

  8. BZOJ 3823 定情信物 递推

    题目大意:定义点为零维元素,线为一维元素,面为二维元素,空间为三维元素,以此类推,求n维立方体中各维元素都有多少 令f[i][j]为i维立方体内j维元素的个数 考虑n维立方体中的i维元素,将n维立方体 ...

  9. [数学 找规律] BZOJ 3823 定情信物

    %%% zky http://blog.csdn.net/iamzky/article/details/42211705 加强数据,被卡出屎,不知道WA了几发 对比下列算式: (x+2)^0=1 (x ...

最新文章

  1. 风暴数码论坛教程--apk和odex的介绍和合并
  2. python画人脸关键点
  3. IDEA中cannot resolve method getBean in applicationContext的解决方法
  4. RPC和Restful深入理解
  5. linux集成开发环境
  6. 判断一棵树是否为平衡二叉树
  7. C++(STL):30 ---关联式容器map的operator[]和insert效率对比
  8. java简介 ppt 精,TP1java简介.ppt
  9. DAX/PowerBI系列 - 玩转阿里云 Alicloud Pricing
  10. docker容器安装和配置实战
  11. Spark机器学习(12):神经网络算法
  12. linux下载安装花生壳
  13. 斑马打印机链接数据库实现自动打印
  14. 浪曦 ASP.net AJAX系列 视频下载
  15. 为什么网站总显示服务器不能创建对象,IE浏览器出现“Automation 服务器不能创建对象”解决教程...
  16. 鸡先还是蛋先,当然有答案
  17. vs2010生成的exe更改icon
  18. linux中如何安装windows
  19. 如何用Visio画数据库实体关系图
  20. 解决关于电脑跳出一些垃圾弹窗的问题

热门文章

  1. 3dsmax软件问题求救
  2. 双向循环链表的讲解及实现(图解+代码/C语言)
  3. 启动金蝶显示服务器未启动失败,金蝶云平台加密服务器未启动
  4. SSL案例:湖北、厦门、青岛电子税务局HTTPS证书应用...
  5. OPPO A33怎么刷机 OPPO A33的刷机教程 OPPO A33完美解除账号锁
  6. 挂载为什么这么写mount /dev/cdrom /mnt/qwer/
  7. Neo中hash算法,加密算法使用介绍
  8. 每天一个linux命令(31):echo命令
  9. JS特效——时钟轮盘
  10. 计算机主机拆机事项,笔记本电脑拆机注意事项 新手怎么拆解笔记本电脑?