随笔分类 - 数论
讨厌的数论专题, 看看我三年能不能学会你,让你成天折磨我
摘要:## . 最大公约数 一、题目描述 给定 对正整数 ,请你求出每对数的最大公约数。 输入格式 第一行包含整数 。 接下来 行,每行包含一个整数对 。 输出格式 输出共 行,每行输出一个整数对的最大公约数。 数
阅读全文
摘要:## . 约数之和 一、题目描述 给定 个正整数 ,请你输出这些数的乘积的约数之和,答案对 取模。 输入格式 第一行包含整数 。 接下来 行,每行包含一个整数 。 输出格式 输出一个整数,表示所给正整数的乘积的约数
阅读全文
摘要:## . 约数个数 一、题目描述 给定 个正整数 ,请你输出这些数的乘积的约数个数,答案对 取模。 输入格式 第一行包含整数 。 接下来 行,每行包含一个整数 。 输出格式 输出一个整数,表示所给正整数的乘积的约数
阅读全文
摘要:## . 试除法求约数 一、题目描述 给定 $$ 个正整数 ,对于每个整数 ,请你按照从小到大的顺序输出它的所有约数。 输入格式 第一行包含整数 。 接下来 行,每行包含一个整数 。 输出格式 输出共 行,其中第
阅读全文
摘要:## . 筛质数 一、题目描述 给定一个正整数 ,请你求出 中质数的个数。 输入格式 共一行,包含整数 。 输出格式 共一行,包含一个整数,表示 中质数的个数。 数据范围 输入样例: 8 输出样例: 4 二、埃氏筛法
阅读全文
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; /** * 功能:分解质因数 * @param x 待分解的质数因数 */ void divide(int x) { for (int i = 2; i <= x / i; i++) if (x
阅读全文
摘要:## . 分解质因数 一、题目描述 给定 个正整数 ,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。 输入格式 第一行包含整数 。 接下来 行,每行包含一个正整数 。 输出格式 对于每个正整数
阅读全文
摘要:题目传送门 一、前导知识 欧拉函数与筛法求欧拉函数 二、朴素思路 我们先不管数据范围是不是,先思考就朴素的作法是什么样的: ,假设在我们可控的数据范围内,就是筛出数据范围内的, 然后利用公式计算一下和,再$mo
阅读全文
摘要:一、单个数质因数分解 直接上代码: #include <bits/stdc++.h> using namespace std; /** * 功能:分解质数因数 * @param a 待分解的数字 */ const int N = 1010; int primes[N]; //质数因子数组 int i
阅读全文
摘要:题目传送门 #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 *
阅读全文
摘要:题目传送门 一、解题思路 这道题有些意思,因为肯定是分子,怎么想办法也不可能变成分母。肯定是分母,怎么的也变不成分子。就是有可能是分子,也有可能是分母,尽量想办法让它们全是分子,这样出现整数的概率高,出现在分母,还得想办法去约分掉它,麻烦。(贪心) 那它们是否真的
阅读全文
摘要:题目传送门 一、准备知识 求一个数x的所有约数 #include <bits/stdc++.h> using namespace std; const int N = 1010; int c[N]; /** * 功能:获取指定数x的所有约数 * @param x */ void ys(int x)
阅读全文
摘要:题目传送门 #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
阅读全文
摘要:题目传送门 #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
阅读全文
摘要:题目传送门 一、穷举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
阅读全文