首页 > 其他分享 >230512 // 数论

230512 // 数论

时间:2023-05-12 19:14:09浏览次数:24  
标签:const 数论 res 160.110 namespace times int 230512

夺,夺少?哦,85pts,小让一手。


A. 征兵

http://222.180.160.110:1024/contest/3574/problem/1

GM 说,怕久了不打最小生成树我们给忘了。

笑话,就算退役十年我也不一定能忘了 Kruskal,就算在役十年我也不一定能记住 Prim。

就一板板题,没什么好说的。

#define int long long
namespace XSC062 {
using namespace fastIO;
const int cos = 1e4;
const int maxn = 2e4 + 5;
const int maxm = 5e4 + 5;
struct _ {
	int u, v, w;
	bool operator< (const _ &q) const {
		return w > q.w;
	}
};
_ t[maxm];
int f[maxn];
int T, n, m, r, res;
inline void Init(int n) {
	for (int i = 1; i <= n; ++i)
		f[i] = i;
	return;
}
int find(int x) {
	return x == f[x] ? x : f[x] = find(f[x]);
}
inline void merge(int x, int y) {
	f[find(x)] = find(y);
	return;
}
int main() {
	read(T);
	while (T--) {
		read(n), read(m), read(r);
		for (int i = 1; i <= r; ++i) {
			read(t[i].u), read(t[i].v);
			t[i].v += n, read(t[i].w);
			++t[i].u, ++t[i].v;
		}
		std::sort(t + 1, t + r + 1);
		Init(n += m), res = n * cos;
		for (int i = 1; i <= r; ++i) {
			int fx = find(t[i].u);
			int fy = find(t[i].v);
			if (fx == fy)
				continue;
			merge(t[i].u, t[i].v);
			res -= t[i].w;
		}
		print(res, '\n');
	}
	return 0;
}
} // namespace XSC062
#undef int

B. 欧拉函数的值

http://222.180.160.110:1024/contest/3574/problem/2

嘶,太久没碰数学,欧拉函数是啥?小尴一个尬。

哦哦,看完样例懂了,\(n\) 以内和 \(n\) 互质的数个数对吧。好像是用筛法求的来着。现场推一下吧。

列表可以简单地发现,若 \(n={d_1}^{p_1}\times {d_2}^{p_2} \times \cdots \times {d_k}^{p_k}\),则 \(\phi(n) = (d_1-1)\times {d_1}^{p_1-1} \times (d_2-1)\times {d_2}^{p_2-1}\times \cdots \times (d_k-1)\times {d_k}^{p_k-1}\)。所以打个根号算法即可。

namespace XSC062 {
using namespace fastIO;
int n;
inline int phi(int n) {
	int res = 1;
	for (int i = 2; i * i < n; ++i) {
		if (n % i == 0) {
			res *= i - 1;
			n /= i;
			while (n % i == 0)
				res *= i, n /= i;
		}
	}
	if (n > 1)
		res *= n - 1;
	return res;
}
int main() {
	read(n);
	while (n) {
		print(phi(n), '\n');
		read(n);
	}
	return 0;
}
} // namespace XSC062

C. 龙哥的问题

http://222.180.160.110:1024/contest/3574/problem/3

龙哥 /se


G. 线性筛素数

http://222.180.160.110:1024/contest/3574/problem/7

给我十年我都不一定忘得掉欧拉筛…… woc,打挂了。还好一眼就看出来了错在哪里。

namespace XSC062 {
using namespace fastIO;
const int maxm = 5e7 + 5;
const int maxn = 1e8 + 5;
int p[maxm];
bool u[maxn];
int n, m, cnt;
inline void Euler(int n) {
	u[0] = u[1] = 1;
	for (int i = 2; i <= n; ++i) {
		if (!u[i])
			p[++cnt] = i;
		for (int j = 1; j <= cnt &&
						p[j] * i <= n; ++j) {
			u[p[j] * i] = 1;
			if (i % p[j] == 0)
				break;
		}
	}
	return;
}
int main() {
	read(n), read(m);
	Euler(n);
	while (m--) {
		read(n);
		puts(u[n] ? "No" : "Yes");
	}
	return 0;
}
} // namespace XSC062

标签:const,数论,res,160.110,namespace,times,int,230512
From: https://www.cnblogs.com/XSC062/p/17396000.html

相关文章

  • 一些数论知识
    欧拉函数定义$1-N$中与$N$互质的个数被称为欧拉函数,记为$φ(n)$。公式设$n={p_1}{c_1}*{p_2}\cdots^{c_m}$则$φ(n)=n\dfrac{p_1-1}{p_1}\dfrac{p_2-1}{p_2}\cdots\dfrac{p_m-1}{p_m}$性质$φ(1)=1$,因为$1$的质因数个数为$0$,所以原式$=1$$n$为质数,则$φ(n......
  • 数论
    莫反,欧拉反演常用结论:\(\mu*1=\epsilon,\varphi*1=id\).\(\mu^2(n)=\sum_{d^2|n}\mu(d)\).\(d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]\).\(\varphi(xy)=\frac{\varphi(x)\varphi(y)\gcd(x,y)}{\varphi(\gcd(x,y))}\).杜教筛积性函数\(f=g*h\),它们的前缀和分别是......
  • 数论基础1-整数的离散型
    例题一:例题二:例题三:例题四: ......
  • 初等数学瞎扯Ⅲ:数论函数与筛法
    0.前置知识与基本定义\([op]\):值为\(1\)当且仅当方括号内条件为真。记为艾弗森括号唯一分解定理:一个正整数\(x\)可以被唯一分解为\(\prod\limits_{i=1}^mp_i^{c_i}\),其中\(\foralli\in[1,m],p_i\in\mathbb{P}\)。(关于\(\mathbb{P}\),详见初等数学瞎扯Ⅰ:同余相关)。......
  • codeforces 2B B. The least round way(dp+数论)
    题目链接:codeforces2B题目大意:给出一个n*n的矩阵,从左上角走到右下角,只能向右或向下走,问路径上的数之积末尾0最少的方案是什么。题目分析:首先我们要做两个预处理,处理出每个位置上的数包含多少个2的质因子和多少个5这个质因子然后我们统计路径上弄到最少的2的方案数和最少的5的方案......
  • codeforces 264B B. Good Sequences(dp+数论)
    题目链接:codeforces264B题目大意:给出n个数,利用这n个数构造一个好的序列,好的序列是单调增的,而且序列中相邻的两个元素都不互质,问最长的好序列的长度是多少。题目分析:首先我们定义状态dp[i]表示当前的数进行构造的序列末尾的数的质因数包含i的时候的最长的情况。然后我们从小到大枚......
  • codeforces 225B B. Well-known Numbers(数论+二分+贪心+构造)
    题目链接:codeforces225B题目大意:定义f(k,n)为类似菲波那契数推导,只不过变为前k项的和,然后给出一个数s,利用k-菲波那契数构造出一个不重复的集合的元素和为s,集合的规模大于1题目分析:首先因为菲波那契数的增长速度快的吓人,所以给的数据范围109很快就能达到,我们得到O(n)的构造出所有的......
  • CodeForces - 616E Sum of Remainders (数论)大数取余求和 好题
    CodeForces-616ESumofRemaindersTimeLimit: 2000MS MemoryLimit: 262144KB 64bitIOFormat: %I64d&%I64uSubmit StatusDescriptionCalculatethevalueofthesum: nmod1 + nmod2 + nmod3 +...+ nmodm.Astheresultcanbeve......
  • OI 数论中的上界估计与时间复杂度证明
    预备0.1渐进符号其实不少高等数学/数学分析教材在讲解无穷小的比较时已经相当严谨地介绍过大O、小O记号,然而各种历史习惯记法的符号滥用(abuseofnotation)[1]直到现在都让笔者头疼.Thesenotationsseemtobeinnocent,butcanbecatastrophicwithoutcarefulm......
  • 洛谷P1249最大乘积,数论找规律
    最大乘积题目描述一个正整数一般可以分为几个互不相同的自然数的和,如\(3=1+2\),\(4=1+3\),\(5=1+4=2+3\),\(6=1+5=2+4\)。现在你的任务是将指定的正整数\(n\)分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。输入格式只一个正整数\(n\),(\(3\leqn\leq10000\))。......