首页 > TAG信息列表 > gcd
RSA加密算法
欧几里得算法扩展 在介绍欧几里得算法扩展之前写看一遍欧几里得算法 #include<iostream> using namespace std; int gcd(int a, int b) { return b == 0 ? a : gcd(b, a%b); } int main() { int a,b; a = 23; b = 8; cout<<gcd(a,b)<<endl; }Codeforces 杂题选讲 #1
1715C Monoblock 展开 题意简述: 我们定义连续 \(k\)(\(k\) 尽可能大)个相同的数被称为一个“块”。一个序列的“块”数就相当于将其直接去重后的序列长度。 给定一个长度 \(n\) 的序列和 \(m\) 次询问。对于每次询问,有两个数 \(i,x\),先将 \(a_i\) 改为 \(x\),然后输出 \(\sum\limitsCodeforces Round #761 (Div. 2) B. GCD Problem
B. GCD Problem 题目Link 题意 \(T (1 \le T \le 100000)\) 组数据,给定一个数字 \(n (10 \le n \le 10^9)\),请你找出三个不同的正整数 \(a, b, c\) 满足 \(a + b + c = n\),并且 \(gcd(a, b) = c\)。 SOLUTION 思路一: 首先想到对 \(n\) 分解质因数,然后枚举 \(c\),但是这样复杂度是不CF1068B LCM
题意: 给定b,求lcm(a,b)/a 有多少种,1<=a<=b<=1e11 解: 首先:lcm(a,b)/a=a*b/(gcd(a,b)*a)=b/gcd(a,b) 其次,若 b%a!=0,则b/gcd(a,b)=b/1=b,a不贡献 那么 问题就转化为了b的因子有多少种。 首先,O(n)的试除法是不能通过题目的 那么我们是否可以转化为O(sqrt(n))的试除法呢,也就是只求b的P2398 GCD SUM
P2398 GCD SUM 题目大意 \(\sum_{i=1}^n \sum_{j=1}^n \gcd(i, j)\) 分析 这个到是蛮好想的,我们推理一下。 \(\sum_{i=1}^n \sum_{j=1}^n \gcd(i, j) = \sum_{k=1}^n k*\sum_{x=1}^{\left \lfloor \frac{n}{k} \right \rfloor} \sum_{y=1}^{\left \lfloor \frac{n}{k} \rightCF #818 E - Madoka and The Best University
欧拉函数,枚举 Problem - E - Codeforces 题意 给定整数 \(n(1<=n<=10^5)\), 对于所有的正整数三元组 \((a,b,c)\) ,求 \(lcm(c,gcd(a,b))\) 的和 思路 对于数论题可以多尝试几种枚举顺序,可能会利用到某些性质优化 首先若枚举 c, 再枚举 a, 复杂度为 \(O(n^2)\) 枚举 a, b 也是 \(O(Codeforces Round #818 (Div. 2) CF1717 解题报告
Codeforces Round #818 (Div. 2) CF1717 解题报告 A Description 求出满足\(1\le a,b\le N,\frac{\operatorname{lcm}(a,b)}{\gcd(a,b)}\le 3\)的二元组\((a,b)\)的数目。 \(N\le 10^8\) Sol 由\(a\times b=\operatorname{lcm}(a,b)\times \gcd(a,b)\)转化上述分式,可得 \[a\times2022.09.02
Codeforces Round #818 (Div. 2) 赛时:476+904+1176+930+0+0 补题:476+904+1176+930+600+0 A. Madoka and Strange Thoughts 求满足 \(a,b\leq n\) 且 \(\frac{lcm(a,b)}{gcd(a,b)}\leq 3\) 的个数。 \(n\leq 10^8,t\leq 10^4\) 。 赛时打表 \(1\) 分钟看出规律,设差分序列 \(b_i=整除相关
gcd 相关 首先要熟悉几个转化: \(\gcd (a,b) = \gcd(a, a + qb)\) \(\gcd (a, b) = \gcd(a, a - b)\) \(\gcd (a, b) = \gcd(a, a \% b)\) 这几个转化很常见。 还有: \(\operatorname{lcm}(a, \gcd(b, c)) = \gcd(\operatorname{lcm}(a, b), \operatorname{lcm}(a, c))\) \(\gCodeforces Round #818 (Div. 2)
Codeforces Round #818 (Div. 2) D. Madoka and The Corruption Scheme 题目大意 给定一场比赛,有\(2^n\)个参赛者。赞助商有k次机会可以调整某一局的结果。而我们想要知道不管赞助商如何调整,我们能得到的获胜者的编号最小值,即为让我们求在k次调整机会下,我们能获得的获胜者的编号最2022 HDU多校9
Arithmetic Subsequence(二进制、思维、分治) Problem 给定一个长度为\(n\)的序列,问是否可以对它重新排序使得重排后的序列中不存在等差子序列 Solve 如果一个数出现了\(3\)次及以上,一定无解 若\(a_i,a_j,a_k\)成等差数列,那么\(a_i\)和\(a_k\)奇偶性相同,所以如果把偶数放到左边,奇常用知识整理
本文持续更新。 裴蜀定理:若 \(a,b\) 为不全为 \(0\) 的整数,存在整数 \(x,y\),使 \(ax+by=\gcd(a,b)\)。 推论 1(多元):若 \(a_1,a_2,...,a_m\) 为不全为 \(0\) 的整数,存在整数 \(b_1,b_2,...,b_m\),使 \(\sum_{k=1}^ma_kb_k=\gcd(a_1,a_2,...,a_m)\)。 推论 2(最小性):对于整数 \(x,y\)CF1548B 题解
前言 题目传送门! 更好的阅读体验? 做法:ST 表加尺取。 思路 看到同余,立刻想到作差。我们建立差分数组 \(c_i = |a_i - a_{i-1}|\),注意取了绝对值。 此时,我们只需在 \(c_i\) 中寻找最长区间 \(\left[l, r\right]\),使得 \(\gcd(c_l, c_{l+1}, \cdots, c_r) > 1\)。 这东西显然能用 ST数论笔记(1)
1、模运算的性质: 加法: \[(A+B)\,mod\,C=(A\,mod\,C+B\,mod\,C)\,mod\,C \] 乘法: \[(A \times B)\,mod\,C=[(A\,mod\,C)\times (B\,mod\,C)]\,mod\,C \] 减法: \[(A - B)\,mod\,C = [(A\,mod\,C)-(B\,mod\,C)+C]\,mod\,C \]2、快速幂: 因为\(a^b\)可以看做成数论----同余方程
《贝祖定理》 简单来说是: 整数 a,b ,gcd(a,b)=d; 则 存在x,y使ax+by=d成立 证明: 《扩展欧几里得算法》 由贝祖定理:ax+by=gcd(a,b) 则:当不断取模gcd(a,b)=......=gcd(an,0)时 an*x+b*0=gcd,而an=gcd,所以 x=1,y=任意,为了方便y=0; 设:当前层ax+by=gcd 已知下一层的x有理数运算
https://www.acwing.com/problem/content/description/1580/ 思路: 这题思路并不难,但如果你傻乎乎的一种一种情况的输出,那会非常的繁琐,巧妙的利用一个函数来统一起来实现。 #include <iostream> using namespace std; typedef long long LL; LL gcd(LL a, LL b) { return b贝祖定理
中文名: 裴蜀定理 别名: 贝祖定理 外文名: Bézout's identity 应用学科: 数学 方程式是:丢番图方程(裴蜀方程) 对任何整数a、b和它们的最大公约数gcd(a,b),关于未知数x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别扩展欧几里得
扩展欧几里得 用途: 求解逆元、好像还可以解二元一次不定方程。 说句闲话:数学课老师让解二元一次方程组,讲题直接扩欧:“这显然是跑两遍EXGCD,求出最小解加膜数取个交集即可。” 于是我写了满满一黑板递归。。。 初初初阶 推导 我们已知 $a,b$ 要求 $x,y$, 使 $ax + by = \gcd(a,b)$欧几里得算法和扩展欧几里得算法
欧几里得算法和扩展欧几里得算法 概述 本篇简要介绍欧几里得算法和扩展欧几里得算法 欧几里得算法 欧几里得算法就是辗转相除法,用于求两个数的最大公约数 欧几里得算法: public static int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } 欧几里得算法的证明: 前提:设gcd(a,b) 是练习8:最大公约数和最小公倍数问题
最大公约数的计算,用到辗转相除法 例如:求 gcd(24, 10) ,可以转换为 gcd(10,4), 然后是 gcd(4,2) ,然后是(2,0),最好得出结果是2 方法1: function gcd(a, b) { var temp if (a < b) temp = b, b = a, a = temp while (b != 0) { temp = b b = a % b a = temp }SDOI2013 项链
首先我们可以求出来满足条件的珠子的总数 \(m\)。有以下结论: 对于一个大小为 \(n\) 的环,用 \(m\) 种颜色给它染色,要求环上相邻两个点的颜色不同,那么方案数为:\((m-1)^n+(-1)^{n}(m-1)\)。 我是硬推出来这个式子的2333 具体来说,设 \(f(n)\) 表示大小为 \(n\) 的环的答案,考虑容斥:【2022杭电多校】第九场 1008 Shortest Path in GCD Graph 【容斥+优化】
链接 https://acm.hdu.edu.cn/showproblem.php?pid=7240 题意是有n个点组成的完全图,每个点的权重组成了1-n的排列,点i和点j的距离为\(gcd(i,j)\) ,给出q组询问,每次询问给出u点和v点,你需要回答u和v的最短距离和最短路的条数 思路 如果\(gcd(u,v)==1\),答案为 1 1 否则最短路的长度一定扩展欧几里得算法,线性同余方程
扩展欧几里得算法 acwing877.扩展欧几里得算法 裴蜀定理: 对于任意整数a、b,一定存在非零整数x、y使得\(ax + by = (a,b)\)(a和b的最大公约数) 扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满足\(ax+by = gcd(a,b)\) 求出的x,y并不暑假集训3
去年暑假打过一次,但是当时太菜,今天看到之前写过,好奇多少分,考后交了一发,发现自己是真的菜 然后,就算开了个坑吧,四道题。。。 A. 数列 \(exgcd\)板子 然后,\(exgcd\)咋用来着? 滚回去学数论基础了 code #include <cstdio> using namespace std; #define int long long int min(int x,CF1712B Woeful Permutation 题解
题目传送门 题目简介 给定一个正整数 \(n\),构造一个数列 \(p\),使 \(1\) 到 \(n\) 中每一个数都出现且只出现 \(1\) 次。 求最大的 \(\sum\limits_{i=1}^n\operatorname{lcm}(i, p_i)\),并输出取得最大值时的数列。 思路 基础知识:\(\operatorname{lcm}(a,b)=\dfrac{a\times b}