luoguP1082 同余方程 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<cstring> #include<iomanip> #include<algorithm> #include<queue> #include<ctime> #define ll long long #de…
什么是GCD? GCD是最大公约数的简称(当然理解为我们伟大的党也未尝不可).在开头,我们先下几个定义: ①a|b表示a能整除b(a是b的约数) ②a mod b表示a-[a/b]b([a/b]在Pascal中相当于a div b) ③gcd(a,b)表示a和b的最大公约数 ④a和b的线性组合表示ax+by(x,y为整数).我们有:若d|a且d|b,则d|ax+by(这很重要!) 线性组合与GCD 现在我们证明一个重要的定理:gcd(a,b)是a和b的最小的正线性组合. 证明: 设gcd(a,b…
描写叙述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入仅仅有一行,包括两个正整数a, b,用一个空格隔开. 输出格式 输出仅仅有一行,包括一个正整数x0.即最小正整数解. 输入数据保证一定有解. 例子1 例子输入1[复制] 3 10 例子输出1[复制] 7 限制 每一个測试点1s 提示 对于40%的数据,2 ≤b≤ 1,000:  对于60%的数据,2 ≤b≤ 50,000,000:  对于100%的数据,2 ≤a, b≤ 2,000,000,000. 分…
题目链接:https://www.luogu.com.cn/problem/P1082 题目大意: 求关于 \(x\) 的同余方程 ax≡1(mod b) 的最小正整数解. 告诉你 \(a,b\) 求 \(x\). 解题思路: 直接套扩展GCD模板. 实现代码如下: #include <bits/stdc++.h> using namespace std; typedef long long ll; void gcd(ll a , ll b , ll &d , ll &x ,…
题目描述 给定A,B,求A^B的所有因数的和,再MOD 9901 输入 一行两个整数 A 和 B. 输出 一行,一个整数 样例输入 2 3 样例输出 15 提示 对于100%的数据满足:0 <= A,B <= 50000000 这道题首先要想到有一个因数和公式 f[a] = ( 1 + p1 + p1^2 + .... + p1^q1 ) * ( 1 + p2 + p2^2 + .... + p2^q2 ) * ...... * ( 1 + pn + pn^2 +.....+ pn^qn )…
原题传送门 水~ 纯拓展欧几里得算法.. #include<iostream> #include<cstdio> #define ll long long using namespace std; ll ans; int a,b; void exgcd(int a,int b,int &x,int &y) { ){x=;y=;return;} exgcd(b,a%b,x,y); int t=x;x=y,y=t-a/b*y; } int main() { cin>…
传送门 ax≡1(mod b) 这个式子就是 a * x % b == 1 % b 相当于 a * x - b * y == 1 只有当 gcd(a,b) == 1 时才有解,也就是说 ax + by = c 有解的充要条件是 c % gcd(a,b) == 0 一般,我们能够找到无数组解满足条件,但是一般是让你求解出最小的那个正整数解 即为 (x % b + b) % b),+b是为了保证不为负数 可以这样想 a * x % b == 1 % b  -> a * x % b == 1  ->…
每日一题 day31 打卡 Analysis 题目问的是满足 ax mod b = 1 的最小正整数 x.(a,b是正整数) 但是不能暴力枚举 x,会超时. 把问题转化一下.观察 ax mod b = 1,它的实质是 ax + by = 1:这里 y 是我们新引入的某个整数,并且似乎是个负数才对.这样表示是为了用扩展欧几里得算法.我们将要努力求出一组 x,y 来满足这个等式.稍微再等一下—— 问题还需要转化.扩展欧几里得是用来求 ax + by = gcd(a,b) 中的未知数的,怎么牵扯到等于…
题目链接 https://cn.vjudge.net/problem/UVA-571 分析 刚做了道倒水问题的题想看看能不能水二倍经验,结果发现了这道题 题意翻译:https://www.cnblogs.com/devymex/archive/2010/08/04/1792288.html 设A容量\(x\),B容量\(y\) 我们把将水倒入A视为\(+x\),将倒空B视为\(-y\),若A满,就倒入B视为\(-x\) 由于\(a,b\)是互质的,根据裴蜀定理一定有\(x,y\)保证有\(ax+…
分析 首先我们可以发现,两个询问都可以通过一个子程序来求. 接着,如果每到一个城市再找下一个城市,显然是行不通的.所以首先先预处理从每一个城市开始,小A和小B要去的城市.预处理的方法很多,我用的是双向链表:按高度把城市排序,用双向链表把每个城市的相邻的城市里连起来,再从每个城市按双向链表往两边搜,如果搜到的城市在这个城市的西边就删掉,否则记录.左右分别记录两个城市,排个序就可以的出小A和小B要去的城市了. 然后我们就可以发现这是一棵树,所以倍增. 我们设g[i][j]指从i城市走j^2轮走到的点…