3823: 定情信物【递推】【线性筛逆元】【带推导过程】
**
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。
对于 100%的数据,N≤10^7,P 为 10^9 内的素数。
**
Solution
终于推出来了好开森QAQ
高维超方体第i维元素的数量将是原超方体第i维的数量*2+(i-1)维的数量
首先我们知道这个推导过程 但是复杂度是O(n2)O(n^2) 的显然我们无法承受= =
然后神犇们都说打表找规律……像我这么弱……打表也看不出规律啊……
于是就默默的推公式好了= =
刚开始并没有写成2x2^x这种形式 而是把所有数都算出来了= =当然∗∗∗***看不出了
之后发现了这个很好的性质 2x2^x
然后就试着写了一些表格- -
我们用f[i][j]f[i][j]表示在 i.i. 维正方体jj维元素的数量
边界条件f[i][i]=2=20=1∗20f[i][i]=2=2^0=1*2^0是显然的
假设我们现在已知f[i][j]f[i][j]考虑对f[i+1][j]f[i+1][j] 的贡献是什么 ??
乘2了
所以不妨设f[i][j]=k∗2xf[i][j]=k*2^x 对f[i+1][j]f[i+1][j]的贡献就是k∗2x∗2=k∗2x+1k*2^x*2=k*2^{x+1}
然后我们发现上下两行2x2^x的系数差1
所以能得到式子f[i][n]=F[i]=2n−i∗(ni)f[i][n]=F[i]=2^{n-i}*\dbinom{n}{i}
然后剩下的请各位神犇随便推了QAQ
**
.元素.维数._{元素}.^{维数} | ||||||
---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | |
0 | 202^0 | 212^1 | 222^2 | 232^3 | 242^4 | 252^5 |
1 | 202^0 | 2∗212*2^1 | 3∗223*2^2 | 4∗234*2^3 | 5∗255*2^5 | |
2 | 202^0 | 3∗213*2^1 | 6∗226*2^2 | 10∗2110*2^1 | ||
3 | 202^0 | 4∗214*2^1 | 10∗2210*2^2 | |||
4 | 202^0 | 5∗215*2^1 |
**
Code
**
代码刚开始WA了……蒟蒻不明所以……so……
ORZ【点这里】
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e7+10;
long long F,n,mod,ans,cnt,x,y;
int inv[maxn];
inline long long Pow(long long a,int k)
{if(!k)return 1;long long z=Pow(a*a%mod,k>>1);if(k&1)return z*a%mod;return z;
}
int main()
{cin>>n>>mod;inv[1]=1;for(int i=2;i<=min(2*n,mod-1);i++)inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;ans=F=Pow(2,n);for(int i=1;i<=n;i++){int tmp=n-i+1;while(tmp%mod==0)tmp/=mod,cnt++;F=1ll*F*tmp%mod;tmp=2*i;while(tmp%mod==0)tmp/=mod,cnt--;F=1ll*F*inv[tmp%mod]%mod;ans^=cnt?0:F;}cout<<ans;return 0;
}
呵呵哒~
3823: 定情信物【递推】【线性筛逆元】【带推导过程】相关推荐
- BZOJ 3823 定情信物 递推
题目大意:定义点为零维元素,线为一维元素,面为二维元素,空间为三维元素,以此类推,求n维立方体中各维元素都有多少 令f[i][j]为i维立方体内j维元素的个数 考虑n维立方体中的i维元素,将n维立方体 ...
- bzoj 3823: 定情信物 线性筛逆元
3823: 定情信物 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 108 Solved: 2 [Submit][Status] Descript ...
- [BZOJ 3823]定情信物
题面 定情信物 题解 这题主要考高中物理和数学. 首先定义 \(f[i][j]\) 表示 \(i\) 维超立方体中第 \(j\) 维元素的数量,根据实际意义,我们可以推出递推式: \(f[i][j]= ...
- BZOJ 3823: 定情信物
Description 都说程序员找不到妹子,可是无人知晓,三生石上竟然还刻着属于小 E 的一笔. 那一天,小 E 穷尽毕生的积蓄,赠与了妹子一个非同寻常的定情信物.那是一个小 小的正方体,但透过它, ...
- BZOJ 3823 定情信物 线性筛乘法逆元
题目大意:n维多面体中有多少n-1维,n-2维,n-3维...1维元素,求他们的异或和并%p. 思路:考试题,当时做的时候不会线性筛乘法逆元,就得了70分... 算法和标程不太一样,标程好象是递推,但 ...
- BZOJ 3823 定情信物【脑推公式/找规律,线性求逆元,坑爹的数论题细节x
如果用f[i][j]表示i维空间里的j维元素有多少个,有公式 f[i][j] = C(i,j) * 2^(i-j) --看题解似乎都是找规律的啊--sro mhy orz 考虑j维向量的方向有C(i, ...
- [数学 找规律] BZOJ 3823 定情信物
%%% zky http://blog.csdn.net/iamzky/article/details/42211705 加强数据,被卡出屎,不知道WA了几发 对比下列算式: (x+2)^0=1 (x ...
- 【BZOJ3823】【East!模拟赛_Round5T1】定情信物 推公式+线性筛逆元(推公式法比出题人简)
题解1: 我们定义点为0维元素.线为1维元素.面为2维元素-- 既然一个低维超方体在对应新轴上平移得到高一维的超方体,比如二维超方体为一个面,然后沿新出现的z轴拓展,那么一个低维元素就会增加一维变成高 ...
- 【bzoj3823】【定情信物】【递推】
Description 都说程序员找不到妹子,可是无人知晓,三生石上竟然还刻着属于小 E 的一笔. 那一天,小 E 穷尽毕生的积蓄,赠与了妹子一个非同寻常的定情信物.那是一个小 小的正方体,但透过它, ...
最新文章
- R语言dplyr处理dataframe:使用mutate函数生成新的列、recode函数进行数据编码、rename函数重命名字段、arrange排序数据列、select筛选数据、filter过滤数据
- ip guard保证java代码安全_IP-guard加密新增四大功能 让一“密“防百疏
- Base64编码原理与应用
- 小白html图片添加文字,小白爬虫入门——爬取图片和文字(超详细)
- 深入理解== 和 equals 的区别
- 图片服务 - thumbor启用AutoJPG
- springmvc注解@
- 《深入浅出WPF》学习笔记之一
- pythonurllib新浪微博_定向爬虫 - Python模拟新浪微博登录(示例代码)
- CS架构客户端软件升级方案
- CSS动画翻转的效果
- CC00230.CloudKubernetes——|KuberNetes细粒度权限控制.V14|——|Ratel.v02|k8s资源管理平台配置|
- 【游戏开发进阶】Unity流体模拟,支持粒子系统,支持流体碰撞交互(Obi Fluid插件使用教程)
- 使用GameMaker中用于碰撞检测的脚本小记
- 程序员必备的软技能-金字塔原理拆解(上)
- 使用Dash快速构建你的数据可视化前端
- 成为Java GC专家系列(三) ——如何优化Java垃圾回收
- 【CF#715C】Digit Tree 点分治+乘法逆元
- python将图片插入word文件的指定位置,并转为pdf文件
- Max-Product Loopy Belief Propagation for Solving MRF's energy function minimization
热门文章
- 熵减的过程是痛苦的,前途是光明的
- 从0.1开始学Python——[29]
- Java正则表达式学习及使用案例干货
- windows10装ubuntu16.04双系统完全版教程!!
- linux sga_max_size 作用,SGA的管理_LinuxOracle的技术博客_51CTO博客
- vue-router.esm.js?fe87:16 [vue-router] Named Route ‘Home‘ has a default child route. When navigating
- 骁龙870内战:iQOO Neo5 SE和小米12X怎么选?
- 六一儿童节陪孩子 游玩景区大全
- WPS在linux系统缺失字体
- 如何在3DMAX中导入CAD文件生成立体图形