随笔分类 -  数论

讨厌的数论专题, 看看我三年能不能学会你,让你成天折磨我
摘要:##$AcWing$ $872$. 最大公约数 一、题目描述 给定 $n$ 对正整数 $a_i,b_i$,请你求出每对数的最大公约数。 输入格式 第一行包含整数 $n$。 接下来 $n$ 行,每行包含一个整数对 $a_i,b_i$。 输出格式 输出共 $n$ 行,每行输出一个整数对的最大公约数。 数 阅读全文
posted @ 2021-09-27 09:20 糖豆爸爸 阅读(503) 评论(0) 推荐(0)
摘要:##$AcWing$ $871$. 约数之和 一、题目描述 给定 $n$ 个正整数 $a_i$,请你输出这些数的乘积的约数之和,答案对 $10^9+7$ 取模。 输入格式 第一行包含整数 $n$。 接下来 $n$ 行,每行包含一个整数 $a_i$。 输出格式 输出一个整数,表示所给正整数的乘积的约数 阅读全文
posted @ 2021-09-27 09:17 糖豆爸爸 阅读(583) 评论(0) 推荐(1)
摘要:##$AcWing$ $870$. 约数个数 一、题目描述 给定 $n$ 个正整数 $a_i$,请你输出这些数的乘积的约数个数,答案对 $10^9+7$ 取模。 输入格式 第一行包含整数 $n$。 接下来 $n$ 行,每行包含一个整数 $a_i$。 输出格式 输出一个整数,表示所给正整数的乘积的约数 阅读全文
posted @ 2021-09-27 09:06 糖豆爸爸 阅读(620) 评论(0) 推荐(1)
摘要:##$AcWing$ $869$. 试除法求约数 一、题目描述 给定 $$ 个正整数 $a_i$,对于每个整数 $a_i$,请你按照从小到大的顺序输出它的所有约数。 输入格式 第一行包含整数 $n$。 接下来 $n$ 行,每行包含一个整数 $a_i$。 输出格式 输出共 $n$ 行,其中第 $i$ 阅读全文
posted @ 2021-09-27 09:00 糖豆爸爸 阅读(541) 评论(0) 推荐(0)
摘要:##$AcWing$ $868$. 筛质数 一、题目描述 给定一个正整数 $n$,请你求出 $1∼n$ 中质数的个数。 输入格式 共一行,包含整数 $n$。 输出格式 共一行,包含一个整数,表示 $1∼n$ 中质数的个数。 数据范围 $1≤n≤10^6$ 输入样例: 8 输出样例: 4 二、埃氏筛法 阅读全文
posted @ 2021-09-27 08:29 糖豆爸爸 阅读(751) 评论(0) 推荐(1)
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; /** * 功能:分解质因数 * @param x 待分解的质数因数 */ void divide(int x) { for (int i = 2; i <= x / i; i++) if (x 阅读全文
posted @ 2021-09-27 08:25 糖豆爸爸 阅读(502) 评论(0) 推荐(0)
摘要:##$AcWing$ $867$. 分解质因数 一、题目描述 给定 $n$ 个正整数 $a_i$,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。 输入格式 第一行包含整数 $n$。 接下来 $n$ 行,每行包含一个正整数 $a_i$。 输出格式 对于每个正整数 $a_i$ 阅读全文
posted @ 2021-09-27 08:18 糖豆爸爸 阅读(662) 评论(0) 推荐(0)
摘要:等比数列求和公式: $\large S_n=\frac{a_1*(q^n-1)}{q-1}$ 高中数学内容,建议初一、初二时学习。 我们来推导一下: \(S_n=a_1*q^0+a_1*q^1+a_1*q^2+...+a_1*q^{n-1}\) \(①\) \(qS_n=\ \ \ \ \ \ \ 阅读全文
posted @ 2021-09-02 11:30 糖豆爸爸 阅读(6022) 评论(0) 推荐(2)
摘要:一、约数个数公式 如果$n$的唯一分解式: \(n={p_1}^{r_1} {p_2}^{r_2} ... {p_k}^{r_k}\) 一、$n$的约数个数公式: $d(n) = (r_1+1) * (r_2+1) * ... * (r_k+1) $ 证明:以$p_1$为例,这个质数因子,可以选择$ 阅读全文
posted @ 2021-09-01 14:57 糖豆爸爸 阅读(514) 评论(0) 推荐(2)
摘要:题目传送门 一、前导知识 欧拉函数与筛法求欧拉函数 二、朴素思路 我们先不管数据范围是不是$10^{12}$,先思考就朴素的作法是什么样的: \(qiandao(x)=x−ϕ(x)\) ,假设$x$在我们可控的数据范围内,就是筛出数据范围内的$ϕ(x)$, 然后利用公式计算一下$sum$和,再$mo 阅读全文
posted @ 2021-09-01 10:49 糖豆爸爸 阅读(114) 评论(0) 推荐(2)
摘要:欧拉函数专题 一、定义 定义:欧拉函数是小于\(n\)的数中与\(n\)互质的数的数目。 例如\(\large φ(8)=4\),因为\(\large 1,3,5,7\)均和\(\large 8\)互质。 解释:\(1\)和\(8\)是互质的。互质是指两个数的最大公约数为\(1\),而\(1\)和\ 阅读全文
posted @ 2021-09-01 10:40 糖豆爸爸 阅读(538) 评论(0) 推荐(1)
摘要:一、单个数质因数分解 直接上代码: #include <bits/stdc++.h> using namespace std; /** * 功能:分解质数因数 * @param a 待分解的数字 */ const int N = 1010; int primes[N]; //质数因子数组 int i 阅读全文
posted @ 2021-09-01 08:31 糖豆爸爸 阅读(304) 评论(0) 推荐(0)
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; typedef long long LL; LL x, y, ans; //辗转相除法 LL gcd(LL a, LL b) { if (b == 0) return a; ans += 4 * 阅读全文
posted @ 2021-08-31 16:37 糖豆爸爸 阅读(40) 评论(0) 推荐(0)
摘要:题目传送门 一、解题思路 这道题有些意思,因为$a$肯定是分子,怎么想办法也不可能变成分母。$b$肯定是分母,怎么的也变不成分子。$c,d,e,f...$就是有可能是分子,也有可能是分母,尽量想办法让它们全是分子,这样出现整数的概率高,出现在分母,还得想办法去约分掉它,麻烦。(贪心) 那它们是否真的 阅读全文
posted @ 2021-08-31 16:15 糖豆爸爸 阅读(113) 评论(0) 推荐(0)
摘要:题目传送门 一、准备知识 求一个数x的所有约数 #include <bits/stdc++.h> using namespace std; const int N = 1010; int c[N]; /** * 功能:获取指定数x的所有约数 * @param x */ void ys(int x) 阅读全文
posted @ 2021-08-31 14:34 糖豆爸爸 阅读(75) 评论(0) 推荐(0)
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; typedef long long LL; LL a, b, c; LL gcd(LL x, LL y) { return y ? gcd(y, x % y) : x; } LL lcm(LL x 阅读全文
posted @ 2021-08-31 10:53 糖豆爸爸 阅读(47) 评论(0) 推荐(0)
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; int a, b, c, d; /** 测试用例: 2/1+1/3-1/4 答案:25/12 -2/1+1/3-1/4 答案:-23/12 测试点6 7/4+1/3+8/5-3/2-6/9-6/4 阅读全文
posted @ 2021-08-31 10:47 糖豆爸爸 阅读(94) 评论(0) 推荐(0)
摘要:一、定理内容 算术基本定理,又名唯一分解定理。若$a>1$,那么必有$a=p_1 ^ {\alpha _1}p_2^{\alpha _2}...p_s^{\alpha _s}$,其中$p_j(1<=j<=s)$是两两不相同的质数,$a_j(1<=j<=s)$表示对应质数的幂次(出现的次数)。若在不计 阅读全文
posted @ 2021-08-30 13:50 糖豆爸爸 阅读(920) 评论(0) 推荐(1)
摘要:题目传送门 一、穷举p和q #include <bits/stdc++.h> using namespace std; //最大公约数 int gcd(int x, int y) { return y ? gcd(y, x % y) : x; } //最小公倍数 int lcm(int x, int 阅读全文
posted @ 2021-08-28 10:09 糖豆爸爸 阅读(1016) 评论(0) 推荐(0)
摘要:题目:给定$n$个整数。对于其中的每个数$a[i]$,求出删去它以后剩下的所有数的最大公约数,\(n<=10^6\)。 对于删去$a[i]$后的数组,显然剩下的数一定是$a[1]$到$a[i-1]$(前缀)和$a[i+1]$到$a[n]$(后缀)。这意味着,如果用$Left[i]$表示$a[1]$到 阅读全文
posted @ 2021-08-27 15:22 糖豆爸爸 阅读(107) 评论(0) 推荐(0)

Live2D