BZOJ 3823: 定情信物
来源:互联网 发布:go并发编程实战第二版 编辑:程序博客网 时间:2024/04/30 05:18
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维的n个方向任选k个完全定义的,同样的向量有2^(n-i)个,所以是C(n,i)*2^i,yy一下求逆元的方法就行了。
代码
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;#define MAXN 11000000typedef long long qword;int inv[MAXN];int prime[1100000],topp=-1;bool pflag[MAXN];qword n,p;qword pow_mod(qword x,qword y){ qword ret=1; while (y) { if (y&1)ret=ret*x%p; x=x*x%p; y>>=1; } return ret;}void init(){ inv[1]=1; for (int i=2;i<=n;i++) { if (!pflag[i]) { prime[++topp]=i; inv[i]=pow_mod(i,p-2); } for (int j=0;j<=topp && (qword)i*prime[j]<MAXN;j++) { pflag[i*prime[j]]=true; inv[i*prime[j]]=(qword)inv[i]*inv[prime[j]]%p; if (i%prime[j]==0)break; } }}int main(){ scanf("%lld%lld",&n,&p); qword x,y,z; int i,j,k; qword ans=0; init(); x=1;y=1; ans^=x*y%p; int totp=0; for (i=1;i<=n;i++) { x=x*2%p; z=n-i+1; while (z%p==0)totp++,z/=p; y=y*z%p; z=i; while (z%p==0)totp--,z/=p; y=y*inv[z%p]%p; ans^=totp?0:x*y%p; } printf("%lld\n",ans);}
- bzoj 3823: 定情信物
- BZOJ 3823: 定情信物
- BZOJ 3823 定情信物 递推
- 【逆元】【bzoj 3823】: 定情信物
- [数学 找规律] BZOJ 3823 定情信物
- BZOJ 3823 定情信物 线性筛乘法逆元
- 【BZOJ】【P3823】【定情信物】【题解】【线性筛逆元】
- BZOJ 3823 定情信物【脑推公式/找规律,线性求逆元,坑爹的数论题细节x
- BZOJ3823 定情信物
- [BZOJ3823]定情信物
- 3823: 定情信物【递推】【线性筛逆元】【带推导过程】
- 【bzoj3823】【定情信物】【递推】
- 【BZOJ3823】【East!模拟赛_Round5T1】定情信物 推公式+线性筛逆元(推公式法比出题人简)
- 定情赋
- 爱情信物史
- 一吻定情
- 5. 定情礼物
- 承载了多少儿女情长--古代女性信物大观(组图)
- yii 2 框架 getErrors() 系列方法 详解
- Hibernate 03
- 1020. 月饼 (25)
- So Easy! ——————hdu4565(矩阵快速幂)
- Python——序列化
- BZOJ 3823: 定情信物
- OSG截图
- jQuery选择器
- C# 字符串string的使用
- Jquery中each的三种遍历方法
- 3分钟内理解Python的re模块中match、search、findall、finditer的区别
- MSP430 捕获模式,定时器A连续计数模式。有软件循环产生方波信号,信号同时接入 P1.1和P1.2 ,由CCR1由CCR1获取周期,CCR0确定信号占空比
- (ASP.NET)怎么利用Repeater控件在一行显示多个数据
- java命令大全