比赛链接 第 56 场周赛 先放代码,题解慢慢补 A AcWing 4482. 分组 #include<bits/stdc++.h> using namespace std; const int N=105; int n; int a[N]; int main() { cin>>n; int ans=0; for(int i=1;i<=n;i++) { int x; cin>>x;
1.P3704-[SDOI2017]数字表格[莫比乌斯反演] Problem 有一个\(n\times m\)的表格,坐标\((i,j)\)处的数字是\(f_{gcd(i,j)}\),其中\(f\)是斐波那契数列,要求计算\(\prod_{i=1}^n\prod_{j=1}^mf_{gcd(i,j)}\),答案对\(10^9+7\)取模 Solve \[\prod_{i=1}^n\prod_{j=1}^mf_{gcd(i,j)}\\ =\p
同余 一.定理 $ a \equiv b~ (mod ~m) ~ \Leftrightarrow~ a-b=mt $ $ a \equiv b~ (mod ~m) ~ \Leftrightarrow~ b \equiv a~ (mod ~m) $ $ a\equiv b ~ (mod~ m) ~ c\equiv b ~ (mod ~m) \iff a\equiv c ~ (mod ~m) $ $ a\equiv b ~ (mod~ m) ~ c\equiv d ~ (mod ~
题意 给定一个长度为\(N\)的整数序列:\(A_1, A_2, \dots, A_N\) 你可以执行如下操作\(0 \sim K\)次: 选择两个整数\(i\)和\(j\)满足\(i \neq j\),将\(A_i\)加\(1\),\(A_j\)减\(1\)(可能会出现负数)。 问最大的正整数\(x\),满足在\(K\)次操作内,把所有\(A_i\)变成\(x\)的倍数(\(0\)为任意
竟然没有人做这道题 solution [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-50N9CEMt-1597798316871)(https://cdn.luogu.com.cn/upload/vjudge_pic/CF774G/5594570290c0b989f39a81d820befd2001debe5b.png)] 设这个小正方形摆了\(n\)行\(m\)列 我们可
题面传送门 吐槽一句,这么水的题目能搞成蓝色??? 好了,进入正题: 思路 首先,列出式子: \[\left\{ \begin{aligned} \gcd(x,a_0)=a_1\\ lcm(x,b_0)=b_1 \end{aligned} \right. \]那么,先来看第一个式子: \(\gcd(x,a_0)=a_1\),设\(k_0=x\div a_1,k_1=a_0\div a_1\) 可以很快得出,\(\gcd(k_0,k_1)
题面传送门 吐槽一句,这么水的题目能搞成蓝色??? 好了,进入正题: 思路 首先,列出式子: \[\left\{ \begin{aligned} \gcd(x,a_0)=a_1\\ lcm(x,b_0)=b_1 \end{aligned} \right. \]那么,先来看第一个式子: \(\gcd(x,a_0)=a_1\),设\(k_0=x\div a_1,k_1=a_0\div a_1\) 可以很快得出,\(\gcd(k_0,k_1)
在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务 参考《密码工程》p112伪代码实现ExtendedGCD(int a, int b, int *k, int *u, int *v)算法(10’) 在测试代码中计算74模167的逆。(5‘) 提交代码和运行结果截图 代码如下 //myexgcd #include<stdio.h> int main() { uns
扩展欧几里得算法 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务 参考《密码工程》p112伪代码实现ExtendedGCD(int a, int b, int *k, int *u, int *v)算法(10’) 在测试代码中计算74模167的逆。(5‘) 提交代码和运行结果截图 #include <stdio.h> struct EX_GCD { i
任务详情 0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务 1. 参考《密码工程》p112伪代码实现ExtendedGCD(int a, int b, int *k, int *u, int *v)算法(10’) 2. 在测试代码中计算74模167的逆。(5‘) 3. 提交代码和运行结果截图 代码 #include<stdio.h> int exgcd(int
D - Together Square https://atcoder.jp/contests/abc254/tasks/abc254_d 思路 Code #include <bits/stdc++.h> using namespace std; int gcd(int a,int b){ if(b==0){ return a; } return gcd(b,a%b); } int main(){ long long n;
太阳神 求满足如下条件的数对$(a,b)$对数:$a,b$均为正整数且$a,b \leq n$而$lcm(a,b)>n$。 答案对$10^9+7$取模 $n\leq 10^{10}$. 原题题解写的看不懂 题意即为求 $\sum _{a=1} ^{N} \sum _{b=1} ^{N} [lcm(a,b)>N]$. 转化为 $N^2-\sum _{a=1} ^{N} \sum _{b=1} ^{N} [a*b/gcd(a,b
根据裴蜀显然每次最少移动 \(d=\gcd(a_1,a_2,\cdots,a_n)\),注意到 \(1\le d \le k\),初始坐标为 \(k!\),则最后可以移动到 \(d\)。 问题改为: \[\frac{1}{k^n}\sum_{a_1=1}^k\sum_{a_2=1}^k\cdots\sum_{a_n=1}^k\gcd(a_1,a_2,\cdots,a_n) \]\[=\frac{1}{k^n}\sum_{d=1}^kd\sum_{a_1=1
定义 \(\varphi(n)\) 表示小于等于 \(n\) 的和 \(n\) 互质的数的个数 比如 \(\varphi(1)=1\) 当\(n\) 为质数时 \(\varphi(n)=n-1\) \(\varphi(n)=n\prod_{i=1}^s(1-\frac{1}{p_i}),\gcd(p_i,n)=1\) ,这可以用性质 1 和 3 来证 欧拉函数的一些性质 欧拉函数是积性函
描述 给出两个整数 a 和 b,请计算 a 和 b 的最大公约数,通过 print 语句输出。 1≤b≤a≤1000 样例 评测机将通过执行命令 python main.py {a} {b} 来执行你的代码,并将 a 和 b 作为命令行参数传入。 样例一 当 a = 15, b = 12 时,程序执行打印出的结果为: 3 样例二 当
import java.util.Scanner; public class Pro9 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int a; int b; int r; //最大公约数初值 int gcd = 1; //最小公倍数 int lcm = 0;
Description 给定长度为 \(n\) 的数列 \(a\),求 \[\max\limits_{1\le i<j\le n}\{\rm LCM(a_i,a_j)\} \]\(n,a_i\le 10^5\) Solution \(\rm LCM\) 先转化成乘积除以 \(\rm gcd\) 的形式,枚举 \(\rm gcd=t\) 并提取出来所有是该数倍数的数,下面叙述中的 \(x\) 都表示除过 \(t\) 得到的
同余 一.定理 $ a \equiv b~ (mod ~m) \Leftrightarrow a-b=mt $ $ a \equiv b~ (mod ~m) \Leftrightarrow b \equiv a~ (mod ~m) $ $ a\equiv b (mod m) ~ c\equiv b ~ (mod ~m) \iff a\equiv c ~ (mod ~m) $ $ a\equiv b (mod m) ~ c\equiv d ~ (mod ~m) \iff a+c
注意到只要两个人初始的朝向相反就可以看到对方,否则不行。直接把斜率搞成一个 pair 压到 map 里存个数就行了。 点击查看代码 #include<cstdio> #include<iostream> #include<map> #define mp std::make_pair typedef std::pair<int,int> pii; int n; std::map<pii,int> ms; int
原题传送门 1. 题目描述 2. Solution 1 1、思路分析 思路: 直线点斜式方程,一个点加一个斜率 斜率 slope = dy / dx,用分数表示斜率,求分子分母的最大公约数,约分,最后将分子@分母作为key存储到 HashMap。 细节,平面内如果有重叠的点,按照正常的算法约分,会出现0的情况,所以需要单独用一个
题目传送门 一、视频教程 https://www.bilibili.com/video/BV1cP4y1c7q8 二、解题思路 最开始读错题,成了: \(1<=x,y<=N\),并且\(gcd(x,y)=1\)有多少数对? 这不就是在计算\(\displaystyle \sum_{i=1}^{N}φ(i)\)吗? 其实本题不是说\(gcd(x,y)=1\),而是说\(gcd(x,y)=p\),其中\(p\)是质
一、欧几里得算法 又称辗转相除法,用于计算两个整数a,b的最大公约数 gcd(a,b)。基本算法:设 a = qb + r,其中a,b,q,r都是整数,则 gcd(a,b) = gcd(b,r),即 gcd(a,b) = gcd(b,a%b)。 证明: a = qb + r如果 r = 0,那么 a 是 b 的倍数,此时显然 b 是 a 和 b 的最大公约数。如果 r ≠ 0,任何整除 a
复杂度 $ O(log(n)) $ 总体复杂度 $ 10^{5} \times log(2 \times 10^{9}) \approx 4 \times 10^{6} $ 点击查看代码 #include<iostream> using namespace std; typedef long long LL; int exgcd(int a, int b, int & x, int & y) { if (!b) { x = 1, y =
欧几里得与拓展欧几里得 欧几里得算法 欧几里得算法是一种快速求出最大公约数的算法。 内容 对于任意的两个整数 \(a,b\),其最大公约数 \(\gcd(a,b) = \gcd(b,a \bmod b)\)。 证明 对于 \(b>a\) 的情况 ,显然成立。 因此只考虑 \(b<a\) 的情况。设 \(a=q \times b +p,\left( q=\left
简要题意: 定义三维空间中的一个 lattice 是满足下列条件的三维整点的集合: \[L=\{u\cdot \overrightarrow{r_1}+v\cdot \overrightarrow{r_2}+w\cdot \overrightarrow{r_3} \}_{u,v,w\in \mathbb Z} \]其中 \(\overrightarrow{r_1},\overrightarrow{r_2},\overrightarrow{r_3}\) 为