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 内的素数。
题解:
          设f(0)表示在K维空间下0维元素的个数.
          显然
                  f(0)=2^k;
          一个x维的元素在k维空间中可以扩展出(k-x)个(x+1)维的元素.
2*(x+1)个x维元素可以确定一个(x+1)维的元素.
所以
f(1)=(k*f(0))/2;
f(2)=((k-1)*f(1))/4;
f(x+1)=((k-x)*f(x))/(2*(x+1));
然后递推即可.我貌似是反着推的..
注意p有可能会小于n.
所以需要把参与运算的数分解为a*p^b的形式.
代码:
#include<iostream>
#include<cstdio>
#define N 10000010
using namespace std;
int n;
long long inv[N],t,ans,P,temp,aa,x,y;
struct use{int a,b;};
void pre(){inv[1]=1;for(int i=2;i<=n&&i<P;i++)inv[i]=(P-P/(long long)i*inv[P%i]%P);
}
use cal(int x){int t(0);while (x%P==0) {t++;x/=P;};    return use{x,t};
}
int main(){scanf("%d%lld",&n,&P);pre();t=1;ans^=t;aa=n*2;x=1;y=0;for (int i=1;i<=n;i++){use a=cal(aa),b=cal(i);x=(long long)x*a.a%P;y=y+a.b;x=(x*inv[(b.a)%P])%P;y=y-b.b;if (!y) ans^=x;aa-=2;}cout<<ans<<endl;
}

【bzoj3823】【定情信物】【递推】相关推荐

  1. BZOJ 3823 定情信物 递推

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

  2. BZOJ3823 定情信物

    想象一下一个n维超立方体折跃到n+1维的过程(我是不是星际玩多了-_-) 先把这个n维超立方体复制一份,然后在没对对应点之间连线 那么如果f[i][j]表示i维超立方体中j维元素的数量的话,由上面的过 ...

  3. BZOJ3823 : 定情信物

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

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

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

  5. [BZOJ 3823]定情信物

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

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

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

  7. BZOJ 3823: 定情信物

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

  8. 定情信物(bzoj 3823)

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

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

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

最新文章

  1. 不允许程序员透露薪资!!!凭啥?
  2. centos6.5下安装docker
  3. 教你打造一个Android组件化开发框架
  4. 用java编写五子棋游戏_java编写一个五子棋游戏,拜托了
  5. 哲学家就餐问题linux源代码,Linux下实现哲学家就餐问题
  6. Hive的基本操作-表结构修改和数据加载
  7. 中石油训练赛 - 奎奎发红包(贪心)
  8. 关于 OData 协议的数据类型 - SAP gateway 框架是如何解析数据类型的?
  9. Spring中的重试功能!嗯,有点东西
  10. 字符串处理 —— 回文串相关
  11. 面试官:请讲一下Redis主从复制的功能及实现原理
  12. 《Linux系统编程(第2版)》——2.6 关闭文件
  13. 免费素材下载:一套超棒的免费UI套件
  14. 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
  15. 中国互联网变天,小米上市后将彻底冲破 BAT 格局
  16. U盘快捷方式文件病毒解决方法
  17. UltraGrid本地Oracle数据库增删改查
  18. win10专业版使用vmware安装虚拟机时“出现此主机支持Intel VT-x,但Intel VT-x处于禁用状态”。
  19. ROS2 Foxy depthai_ros教程
  20. 福师《大学摄影》在线作业一、二

热门文章

  1. H5中添加video视频
  2. 笔记本电脑键盘完全无效的解决办法
  3. 采访四位“果粉”后,iPhone魅力已不再?
  4. 高德Api绘制线路轨迹
  5. 撸代码速度提升10倍的技巧,收藏慢慢看!!!【内含福利】
  6. c#五子棋实验报告_(C#)五子棋
  7. 超72小时整理,全网最全「人工智能·AI 工具导航网站」
  8. 机器学习入门科普篇--系列二
  9. 分享国外几个主流的设计网站/社区
  10. 【未来已来】人人都说GPT,人人都怕GPT,人人都用GPT