【类欧几里得】推导过程

本文详细介绍了类欧几里得算法在HDU 6275 Mod, Xor and Everything问题中的应用,通过三个部分F(a,b,c,n)、g(a,b,c,n)和h(a,b,c,n)的推导过程,阐述如何解决模运算与异或问题。文章通过举例和不等式求和的思想,辅助理解算法细节,并提供了相关的代码实现。" 72935442,6285501,文本相似度计算:欧氏距离、余弦相似度、Jaccard与编辑距离解析,"['自然语言处理', '文本分析', '算法', '数据挖掘', '机器学习']
摘要由CSDN通过智能技术生成

参考博客:类欧几里得算法小结

例题:HDU 6275 Mod, Xor and Everything


题目描述

You are given an integer n.
You are required to calculate (n mod 1) xor (n mod 2) xor ... xor (n mod (n - 1)) xor (n mod n).
The “xor” operation means “exclusive OR”.

输入

The first line contains an integer T (1≤T≤5) representing the number of test cases.
For each test case, there is an integer n (1≤n≤1012) in one line.

输出

For each test case, print the answer in one line.


推导过程主要参考以上博客:

但是有些细节我觉得自己还是不太明白,自己重新写一次博客加深印象!!!!

1、F(a,b,c,n)

\large f(a,b,c,n) = \sum_{i=0}^n\left \lfloor \frac{ai+b}{c}\right \rfloor

1、当  a>=c   或者 b>=c 时:

(此时,a和b都可以分成  整除部分  和  余数部分  表示 ):

\large f(a,b,c,n) = \sum_{i=0}^n (\left \lfloor \frac{a\%c*i+b\%c}{c} \right \rfloor +\left \lfloor \frac{a}{c} \right \rfloor *i+\left \lfloor \frac{b}{c} \right \rfloor )

\large =\sum_{i=0}^n \left \lfloor \frac{a\%c*i+b\%c}{c} \right \rfloor +\frac{n*(n+1)}{2}*\left \lfloor \frac{a}{c} \right \rfloor +(n+1)\left \lfloor \frac{b}{c} \right \rfloor

\large =f(a\%c,b\%c,c,n)+\frac{n*(n+1)}{2}*\left \lfloor \frac{a}{c} \right \rfloor +(n+1)\left \lfloor \frac{b}{c} \right \rfloor


2、当  a<c 并且 b<c 时:

在推导之前先给大家一个思想用不等式求和的方式更换一个数:

譬如:

\large \sum_{i=0}^{n}i=\sum_{i=0}^{n}\sum_{j=1}^{n}(i\geq j)

左边:   等差数列求和 , 右边:    i 分解成从1~i 个1累加

i=1时:  j = 1 满足条件.                      i = 1                    = 1

i=2时:  j = 1 , 2 满足条件                  i = 1 + 1              = 2

i=3时:  j = 1 , 2 , 3 满足条件             i = 1 + 1 + 1        = 3

i=4时:  j = 1 , 2 , 3 , 4满足条件         i = 1 + 1 + 1 + 1  = 4


开始推导:

\large m=\left \lfloor \frac{a*n+b}{c}\right \rfloor

\large f(a,b,c,n) = \sum_{i=0}^{n} \sum_{j=1}^{m}(\left \lfloor \frac{a*i+b}{c} \right \rfloor\geq j)

换元法:令 k = j-1 , 因为变量名字可以换回来,所以 j = j - 1 

\large f(a,b,c,n) = \sum_{i=0}^{n} \sum_{j=0}^{m-1}(\left \lfloor \frac{a*i+b}{c} \right \rfloor\geq (j+1))

符号两边同时乘以C 不改变 符号方向:同时满足以下式子:

\large (j+1) \leq \left \lfloor \frac{a*i+b}{c} \right \rfloor \leq\frac{a*i+b}{c}

把在乘法过程把下取整符号去掉

\large f(a,b,c,n) = \sum_{i=0}^{n} \sum_{j=0}^{m-1}( a*i+b\geq cj+c)

把≥变成>

弗勒内-塞雷公式(Frenet-Serret formula)用来描述欧几里得空间中的粒子在连续可微曲线上的运动。公式描述了曲线的切向矢量T,法向矢量N和副法向矢量B之间的关系。弗勒内-塞雷公式可以通过对曲线上的点进行微分来推导。 根据弗勒内-塞雷公式的推导,我们可以得到如下公式: d T d s = κ N d N d s = -κ T - τ B d B d s = -τ N 其中,dT/ds表示切向矢量T对弧长s的导数,dN/ds表示法向矢量N对弧长s的导数,dB/ds表示副法向矢量B对弧长s的导数。κ表示曲率(curvature),τ表示挠率(torsion)。 在无人驾驶路径规划应用中,常常将车辆运动曲线投影到同一平面内,并设定挠率为0。这样,弗勒内公式可以进一步简化为: d T d s = κ N d N d s = -κ T 这就是在无人驾驶路径规划中常用的简化弗勒内公式。 以上是弗勒内-塞雷公式的推导过程和简化形式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【自动驾驶】Frenet坐标系与Cartesian坐标系(一)](https://blog.csdn.net/weixin_42301220/article/details/125211683)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值