当前位置:网站首页>2022.8.8 Selected Lectures on Good Topics (Number Theory Field)
2022.8.8 Selected Lectures on Good Topics (Number Theory Field)
2022-08-10 21:33:00 【aWty_】
T1 反素数
t a g tag tag:暴力 dfs ???
分析
The first thing we no idea,于是考虑拿出一个数 n n n 对她进行质因数分解:
n = ∏ p i k i n = \prod_{}p_i^{k_i} n=∏piki
再经过一些观察可以发现,如果对于 p i p_i pi 从小到大排序过后,对于一个反素数而言, k i k_i ki Is it does not increase monotonically.
这个其实挺好证明的,因为如果 k i k_i ki The monotone increasing( k i > k i − 1 k_i > k_{i - 1} ki>ki−1),那么我们交换 k i k_i ki 和 k i − 1 k_{i - 1} ki−1,那么我们就得到了一个因数个数与原数相同的且值比原数小的数 n ′ n' n′,这样一来 n n n 就不满足反素数的定义了,证毕.
于是我们可以得出一个性质,那么就是 1 e 9 1e9 1e9 The prime number must be led by former 10 10 10 个质数组成(这个很显然吧).那么我们就可以愉快的 d f s dfs dfs 了,就是尝试确定每一个质数的指数,同时记录一个约数个数就好了.
代码
#include<bits/stdc++.h>
using namespace std;
#define in
int n = 0;
int mx = 0;
int ans = 0;
int p[11] = {
0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 19 };
void dfs(int m, int ind, int num, int k){
// 当前数 The current prime number The few number 当前指数
if(num > mx or (num == mx and m < ans)) ans = m, mx = num;
int j = 0, temp, i = m;
while(j < k){
j++;
if(n / i < p[ind]) break;
temp = num * (j + 1), i = i * p[ind];
if(i <= n) dfs(i, ind + 1, temp, j);
}
}
signed main(){
cin >> n;
dfs(1, 1, 1, 30);
cout << ans << '\n';
return 0;
}
T2 余数求和
传送门:[CQOI2007]余数求和
t a g tag tag:Modular arithmetic???
分析
Direct push formula:
∑ i = 1 n k m o d i = ∑ i = 1 n k − i × ⌊ k i ⌋ = n k − ∑ i = 1 n i × ⌊ k i ⌋ \begin{aligned} & \sum_{i = 1}^n k \mod i \\ = & \sum_{i = 1}^n k - i \times \left\lfloor \frac ki \right\rfloor \\ = & nk - \sum_{i = 1}^n i \times \left\lfloor \frac ki \right\rfloor \end{aligned} ==i=1∑nkmodii=1∑nk−i×⌊ik⌋nk−i=1∑ni×⌊ik⌋
turn addition, subtraction, multiplication, and divisionAnd then we found the back那一坨: ∑ i = 1 n i × ⌊ k i ⌋ \sum\limits_{i = 1}^n i \times \lfloor \frac ki \rfloor i=1∑ni×⌊ik⌋ 可以整除分块,然后就可以 O ( n ) O(\sqrt n) O(n) 做完了.
代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
int ans = 0;
int n = 0; int k = 0;
signed main(){
cin >> n >> k;
ans += n * k;
for(int l = 1, r; l <= n; l = r + 1){
if(k / l != 0) r = min(n, k / (k / l));
else r = n;
ans -= (k / l) * (l + r) * (r - l + 1) / 2;
}
cout << ans << '\n';
return 0;
}
T3 yy 的 gcd
传送门:yy 的 gcd
t a g tag tag:莫比乌斯反演???
分析
Get the answer is( p r i m e prime prime Said prime set):
a n s = ∑ i = 1 n ∑ j = 1 m [ gcd ( i , j ) ∈ p r i m e ] ans = \sum_{i = 1}^n \sum_{j = 1}^m [\gcd(i, j) \in prime] ans=i=1∑nj=1∑m[gcd(i,j)∈prime]
我们把他化简成能莫反的形式:
a n s = ∑ k ∈ p r i m e ∑ i = 1 n ∑ j = 1 m [ gcd ( i , j ) = k ] = ∑ k = ∈ p r i m e ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ [ gcd ( i , j ) = 1 ] \begin{aligned} ans = & \sum_{k \in prime} \sum_{i = 1}^n \sum_{j = 1}^m [\gcd(i, j) = k] \\ = &\sum_{k = \in prime} \sum_{i = 1}^{\lfloor \frac nk \rfloor} \sum_{j = 1}^{\lfloor \frac mk \rfloor} [\gcd(i, j) = 1] \\ \end{aligned} ans==k∈prime∑i=1∑nj=1∑m[gcd(i,j)=k]k=∈prime∑i=1∑⌊kn⌋j=1∑⌊km⌋[gcd(i,j)=1]
然后就是喜闻乐见的莫反环节了:
= ∑ k = ∈ p r i m e ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ ∑ d ∣ gcd ( i , j ) μ ( d ) \begin{aligned} = & \sum_{k = \in prime} \sum_{i = 1}^{\lfloor \frac nk \rfloor} \sum_{j = 1}^{\lfloor \frac mk \rfloor} \sum_{d | \gcd(i, j)} \mu(d) \\ \end{aligned} =k=∈prime∑i=1∑⌊kn⌋j=1∑⌊km⌋d∣gcd(i,j)∑μ(d)
再然后就是一些小 t r i c k trick trick 了:
= ∑ k = ∈ p r i m e ∑ d = 1 ⌊ n k ⌋ ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ [ d ∣ i ∧ d ∣ j ] μ ( d ) = ∑ k = ∈ p r i m e ∑ d = 1 ⌊ n k ⌋ ⌊ n k d ⌋ ⌊ m k d ⌋ μ ( d ) \begin{aligned} = & \sum_{k = \in prime} \sum_{d = 1}^{\lfloor \frac nk \rfloor} \sum_{i = 1}^{\lfloor \frac nk \rfloor} \sum_{j = 1}^{\lfloor \frac mk \rfloor} [d | i \land d | j]\mu(d) \\ = & \sum_{k = \in prime} \sum_{d = 1}^{\lfloor \frac nk \rfloor} \left\lfloor \frac{n}{kd} \right\rfloor \left\lfloor \frac{m}{kd} \right\rfloor \mu(d) \end{aligned} ==k=∈prime∑d=1∑⌊kn⌋i=1∑⌊kn⌋j=1∑⌊km⌋[d∣i∧d∣j]μ(d)k=∈prime∑d=1∑⌊kn⌋⌊kdn⌋⌊kdm⌋μ(d)
然后我们发现好像式子已经化到最简了,但是我们算一下复杂度就会发现我们愉快的 T T T 掉了.所以说这里又有一个常用的降复杂度的 t r i c k trick trick:令 T = k d T = kd T=kd,然后:
a n s = ∑ k = ∈ p r i m e ∑ d = 1 ⌊ n k ⌋ ⌊ n T ⌋ ⌊ m T ⌋ μ ( d ) \begin{aligned} ans = & \sum_{k = \in prime} \sum_{d = 1}^{\lfloor \frac nk \rfloor} \left\lfloor \frac{n}{T} \right\rfloor \left\lfloor \frac{m}{T} \right\rfloor \mu(d) \end{aligned} ans=k=∈prime∑d=1∑⌊kn⌋⌊Tn⌋⌊Tm⌋μ(d)
Then consider the enumeration T T T,并把 T T T The mentioned ahead:
= ∑ T = 1 n ⌊ n T ⌋ ⌊ m T ⌋ ∑ k ∣ T ∧ k ∈ p r i m e μ ( T k ) = \sum_{T = 1}^n \left\lfloor \frac{n}{T} \right\rfloor \left\lfloor \frac{m}{T} \right\rfloor \sum_{k | T \land k \in prime} \mu(\frac Tk) =T=1∑n⌊Tn⌋⌊Tm⌋k∣T∧k∈prime∑μ(kT)
turn addition, subtraction, multiplication, and divisionAnd then we found the back ∑ k ∣ T ∧ k ∈ p r i m e μ ( T k ) \sum\limits_{k | T \land k \in prime} \mu(\frac Tk) k∣T∧k∈prime∑μ(kT) 可以预处理,具体来说对于每一个质数 k k k 枚举 k k k 的倍数 T T T,And then put her value, μ ( T k ) \mu(\frac Tk) μ(kT) 就好了.
#include<bits/stdc++.h>
using namespace std;
#define in read()
#define MAXN 10000010
inline int read(){
int x = 0; char c = getchar();
while(c < '0' or c > '9') c = getchar();
while('0' <= c and c <= '9'){
x = x * 10 + c - '0'; c = getchar();
}
return x;
}
int Q = 0;
int n = 0; int m = 0;
int cnt = 0;
int flag[MAXN] = {
0 };
int mu[MAXN] = {
0 };
int prime[MAXN] = {
0 };
long long f[MAXN] = {
0 };
long long sum[MAXN] = {
0 };
void sieve(){
mu[1] = 1;
for(int i = 2; i <= MAXN; i++){
if(!flag[i]) prime[++cnt] = i, mu[i] = -1;
for(int j = 1; j <= cnt and i * prime[j] <= MAXN; j++){
flag[i * prime[j]] = 1;
if(i % prime[j] == 0) break;
mu[i * prime[j]] = -mu[i];
}
}
for (int i = 1; i <= cnt; i++)
for (int j = 1; prime[i] * j <= MAXN; j++)
f[j * prime[i]] += mu[j];
for (int i = 1; i <= MAXN; i++)
sum[i] = sum[i - 1] + f[i];
}
long long solve(int a,int b) {
long long ans = 0;
if (a > b) swap(a, b);
for (int l = 1, r; l <= a; l = r + 1) {
r = min(a / (a / l), b / (b / l));
ans += (sum[r] - sum[l - 1]) * (a / l) * (b / l);
}
return ans;
}
signed main(){
Q = in;
sieve();
while(Q--){
n = in; m = in;
if(n > m) swap(n, m);
cout << solve(n, m) << '\n';
}
return 0;
}
T4 dkw 的 lcm
传送门:dkw 的 lcm
t a g tag tag:把数看成希尔伯特空间???
分析
直接把式子告诉你了:
a n s = ∏ i 1 = 1 n ∏ i 2 = 1 n ⋯ ∏ i k = 1 n φ ( l c m ( i 1 , i 2 , i 3 , ⋯ , i k ) ) m o d ( 1 e 9 + 7 ) ans = \prod_{i_1 = 1}^n\prod_{i_2 = 1}^n \cdots \prod_{i_k = 1}^n \varphi(lcm(i_1, i_2, i_3, \cdots, i_k)) \mod (1e9+7) ans=i1=1∏ni2=1∏n⋯ik=1∏nφ(lcm(i1,i2,i3,⋯,ik))mod(1e9+7)
首先 t a g tag tag 里面的希尔伯特空间是个啥?简单来说无限维的空间就可以理解成一个希尔伯特空间.那么这个空间是怎么定义的呢?对于一个数 n n n Prime factors decomposition to him,然后希尔伯特空间中的维度就代表质因子的次数.
So each Numbers n n n 就能被看成希尔伯特空间中的一个向量.
这样做的好处是什么呢?因为这样一来我们复杂的 l c m lcm lcm 操作就变成了对于很多的无限维向量,在每一个维度上取一个最大值,得到的新的数就是这些 n n n 维向量所代表的数的 l c m lcm lcm.
根据这个思想,我们就很容易想到把质因子单独拎出来考虑贡献(而且 φ ( n ) \varphi(n) φ(n) Or multiplicative function).所以我们直接考虑每一个 φ ( p t ) \varphi(p^t) φ(pt) 在最终的答案中出现的次数.然后这个就考虑容斥一下嘛,定义一下三个集合:
- A = { x ∣ p t ∤ x , x ≤ n } A = \{ x \mid p^t \nmid x, x \leq n \} A={ x∣pt∤x,x≤n} 也就是 1 ∼ n 1 \sim n 1∼n 中不是 p t p^t pt A collection of multiple of the number of
- B = { x ∣ p t ∣ x , p t + 1 ∤ x , x ≤ n } B = \{ x \mid p^t \mid x, p^{t + 1} \nmid x, x \leq n \} B={ x∣pt∣x,pt+1∤x,x≤n} 也就是 1 ∼ n 1 \sim n 1∼n 中刚好是 p t p^t pt A collection of multiple
- C = { x ∣ p t + 1 ∣ x , x ≤ n } C = \{ x \mid p^{t + 1} \mid x, x \leq n \} C={ x∣pt+1∣x,x≤n} 也就是超过了 p t p^t pt
那么 φ ( p t ) \varphi(p^t) φ(pt) 出现的次数就是:
( ∣ A ∣ + ∣ B ∣ ) k − ∣ A ∣ k (|A| + |B|)^k - |A|^k (∣A∣+∣B∣)k−∣A∣k
然后我们考虑 ∣ A ∣ + ∣ B ∣ |A| + |B| ∣A∣+∣B∣ 等于多少,Obviously is equal to the first n − ∣ C ∣ n - |C| n−∣C∣,那么我们考虑 ∣ C ∣ |C| ∣C∣ 是多少.这个也就很显然了嘛,因为 C C C 中只有 p t + 1 p^{t + 1} pt+1 的倍数,所以个数就是 ⌊ n p t + 1 ⌋ \left\lfloor\frac n{p^{t + 1}}\right\rfloor ⌊pt+1n⌋.
那么同理,我们就可以得到:
∣ A ∣ = n − ⌊ n p t ⌋ ∣ B ∣ = ⌊ n p t ⌋ − ⌊ n p t + 1 ⌋ ∣ C ∣ = ⌊ n p t + 1 ⌋ \begin{aligned} |A| = & n - \left\lfloor \frac n{p^t} \right\rfloor \\ |B| = & \left\lfloor \frac n{p^t} \right\rfloor - \left\lfloor\frac n{p^{t + 1}}\right\rfloor \\ |C| = & \left\lfloor\frac n{p^{t + 1}}\right\rfloor \end{aligned} ∣A∣=∣B∣=∣C∣=n−⌊ptn⌋⌊ptn⌋−⌊pt+1n⌋⌊pt+1n⌋
然后这里有一个细节,就是因为 ( ∣ A ∣ + ∣ B ∣ ) k − ∣ A ∣ k (|A| + |B|)^k - |A|^k (∣A∣+∣B∣)k−∣A∣k 这个东西是写在指数上的,所以根据扩展欧拉定理,When operation is to 1 e 9 + 6 1e9 + 6 1e9+6 Modulus instead of 1 e 9 + 7 1e9 + 7 1e9+7 取模.
于是我们枚举 p p p,然后枚举 t t t,然后计算 ( n − ⌊ n p t + 1 ⌋ ) k − ( n − ⌊ n p t ⌋ ) k \left(n - \left\lfloor\frac n{p^{t + 1}}\right\rfloor\right)^k - \left(n - \left\lfloor \frac n{p^t} \right\rfloor\right)^k (n−⌊pt+1n⌋)k−(n−⌊ptn⌋)k,The fast power O ( log k ) O(\log k) O(logk) 搞定.然后前面枚举的复杂度就是质数的小于等于 n n n 的 若干次方的个数也就是 O ( n ln n ) O(\frac n{\ln n}) O(lnnn)(Prime number is O ( n ln n ) O(\frac n{\ln n}) O(lnnn)).于是总的复杂度就是: O ( n ln n log k ) O(\frac n{\ln n}\log k) O(lnnnlogk) 的.
T5 数论
数论之神
lcm sum h
lcm sum
屠龙勇士
能量采集 noi 2010
边栏推荐
- 2022.8.9 Mock Competition
- 【PCBA方案设计】蓝牙跳绳方案
- LeetCode-36-Binary search tree and doubly linked list
- ACM模板笔记:八数码问题——使用BFS+康托展开打表解决
- 国内Gravatar头像的完美替代方案Cravatar
- 直播课堂系统08补-腾讯云对象存储和课程分类管理
- 《mysql 从入门到内卷再到入土》——Mysql基础 学习笔记目录
- JVM经典五十问,这下面试稳了
- Huawei router clock near the drainage experiment (using stream strategy)
- PPT的两个实用技巧
猜你喜欢
阿里巴巴、蚂蚁集团推出分布式数据库 OceanBase 4.0,单机部署性能超 MySQL
Redis Performance Impact - Asynchronous Mechanisms and Response Latency
Future-oriented IT infrastructure management architecture - Unified IaaS
力扣221题,最大正方形
石油化工行业商业供应链管理系统:标准化供应商管理,优化企业供应链采购流程
ACM解题笔记——HDU 1401 Solitaire(DBFS)
直播课堂系统08补-腾讯云对象存储和课程分类管理
管理员必须知道的RADIUS认证服务器的部署成本
内置模板市场,DataEase开源数据可视化分析平台v1.13.0发布
ACM模板笔记:最长不下降/上升子序列
随机推荐
JVM经典五十问,这下面试稳了
How to submit a PR?【OpenHarmony Growth Plan】【OpenHarmony Open Source Community】
JS中的filter、map、reduce
2021 GKCTF X DASCTF应急挑战杯
ENVI感兴趣区ROI文件由XML格式转为ROI格式
Introduction to PostgreSQL
PostgreSQL — Installation and Common Commands
web逆向之丁香园
管理员必须知道的RADIUS认证服务器的部署成本
Before implementing MES management system, these three questions to consider
RADIUS Authentication Server Deployment Costs That Administrators Must Know
Interpretation of the paper (g-U-Nets) "Graph U-Nets"
ArcPy读取Excel时序数据、批量反距离加权IDW插值与掩膜
Common functions of Auto.js to find pictures and colors
日期选择器组件(限制年份 设定仅展示的月份)
SELECT:简单的查询操作语法&使用例——《mysql 从入门到内卷再到入土》
Huawei router clock near the drainage experiment (using stream strategy)
Uniapp编译后小程序的代码反编译一些思路
Live Classroom System 09--Tencent Cloud VOD Management Module (1)
带你一文读懂SaaS版多租户商城系统对多品牌企业的应用价值