首页 > 编程语言 >类欧几里得算法(部分)

类欧几里得算法(部分)

时间:2022-12-29 14:31:40浏览次数:30  
标签:return ## 欧几里得 算法 fd 部分 LL


##Preface
欧几里得算法,就是辗转相除法。
gcd(i,j)=gcd(j,i%j)

##定义
定义函数
类欧几里得算法(部分)_整除

##推导一波
显然当类欧几里得算法(部分)_整除_02或者类欧几里得算法(部分)_欧几里得算法_03时,类欧几里得算法(部分)_欧几里得算法_04
类欧几里得算法(部分)_类欧几里得算法_05

若当a,b均小于c怎么办?
据大佬说转换成几何意义就是一条直线与x轴、y轴以及类欧几里得算法(部分)_类欧几里得算法_06围成的直角梯形中的整点个数

枚举纵线,
原式可化为
类欧几里得算法(部分)_辗转相除法_07就是上面式子i=n时的数

枚举每个数
类欧几里得算法(部分)_辗转相除法_08

尽量化成j=0
类欧几里得算法(部分)_辗转相除法_09

大于等于下整除和不整除是一样的
类欧几里得算法(部分)_类欧几里得算法_10

变换一下
类欧几里得算法(部分)_辗转相除法_11

类欧几里得算法(部分)_整除_12
注意这里没有取整

大于等于,因为左边是整数
分子减1,符号变成大于
类欧几里得算法(部分)_类欧几里得算法_13

交换主体
类欧几里得算法(部分)_欧几里得算法_14

然后里面的sigma可以撤掉
类欧几里得算法(部分)_欧几里得算法_15
类欧几里得算法(部分)_数论_16
所以类欧几里得算法(部分)_辗转相除法_17

如果只看a,c二维,变换是和欧几里得算法一样的
复杂度也和欧几里得算法一样

可以递归处理
边界条件是a=0,式子很明显。

g和h本蒟蒻并不会推,可以看看大佬的BLOG

##模版

LL fd(LL a,LL b,LL c,LL n)
{
if(a==0) return((b/c)*(n+1));
if(a>=c||b>=c) return fd(a%c,b%c,c,n)+(a/c)*n*(n+1)/2+(b/c)*(n+1);
LL m=(a*n+b)/c;
LL v=fd(c,c-b-1,a,m-1);
return n*m-v;
}


标签:return,##,欧几里得,算法,fd,部分,LL
From: https://blog.51cto.com/u_15925597/5977154

相关文章

  • Linux内存管理-slub算法
    Slub简介Linux内核内存管理用了两个算法:伙伴算法(以页为单位的大内存)和slub算法(以字节为单位的小内存),其中slub系统运行在伙伴系统之上。slub进行内存分组管理,分......
  • m低信噪比下GPS信号的捕获算法研究,使用matlab算法进行仿真
    1.算法概述GPS系统的星座部分是由21颗工作卫星和3颗在轨备用卫星组成,其高度为20183km,这24颗卫星均匀分布在6个等间隔的、相对轨道面倾角为55º的近圆轨道上。GPS......
  • m低信噪比下GPS信号的捕获算法研究,使用matlab算法进行仿真
    1.算法概述        GPS系统的星座部分是由21颗工作卫星和3颗在轨备用卫星组成,其高度为20183km,这24颗卫星均匀分布在6个等间隔的、相对轨道面倾角为55º的近圆轨......
  • 代码随想录算法训练营第一天
     今日刷题两道:数组理论基础,704.二分查找,27.移除元素**704.二分查找题目链接:https://leetcode.cn/problems/binary-search/文章讲解:https://programmercarl.com/......
  • 算法笔记小抄
    栈和队列​​232.用栈实现队列​​225.用队列实现栈20.有效的括号1047.删除字符串中的所有相邻重复项150.逆波兰表达式求值239.滑动窗口最大值347.前K个高频元素参......
  • C++ 数学与算法系列之高斯消元法求解线性方程组
    1.前言什么是消元法?消元法是指将多个方程式组成的方程组中的若干个变量通过有限次地变换,消去方程式中的变量,通过简化方程式,从而获取结果的一种解题方法。消元法主要有代......
  • LeetCode 寻找数组的中心下标算法题解 All In One
    LeetCode寻找数组的中心下标算法题解AllInOne724.FindPivotIndex寻找数组的中心下标"usestrict";/****@authorxgqfrms*@licenseMIT*@copyr......
  • 代码随想录算法训练营第一天LeetCode704,35,34,27
    代码随想录算法训练营第一天|LeetCode704,35,34,27LeetCode704二分查找题目链接:https://leetcode.cn/problems/binary-search///第一次做还不知道二分中的左闭右开和左闭......
  • Bellmanford算法
    给你一张简单有向图,边权都为非负整数。以及一些询问,询问两个点之间的距离。图用以下形式给出:第一行输入三个整数n,m,k,表示图的顶点数、边数和询问次数,顶点编号从1到......
  • 算法刷题 Day 1 | 704.二分查找 & 27.移除元素
    今天是开始刷题的第一天,就像背单词书又从Abandon开始了一样,但是这次一定要坚持下来。第一天的内容是熟悉的数组,先来看第一题二分查找704.二分查找题目链接:https://leetc......