\begin{gather*} &ans=\sum^{n}_{i=1}\sum^{m}_{j=1}\frac{ij}{gcd(i,j)}\\ &ans=\sum^{n}_{d=1}\sum^{m}_{i=1}\sum^{n}_{j=1}\frac{ij}{d}[gcd(i,j)==d]\\ &ans=\sum^{n}_{d=1}\frac{1}{d}\sum^{m}_{i=1}i\sum^{...
问题为:然后就可以用线性筛递推以后用整数分块计算答案。#include <bits/stdc++.h> const int MAXN = 1e7; using namespace std; int T,n,m,cnt; int p[MAXN+5],g[MAXN+5],a[MAXN+5],b[MAXN+5]; bool vis[MAXN+5]; inline void in...
问题为: \begin{align*} 若k != 1\ g(p) &= p^k-p^{k-1}-(p^{k-1}-p^{k-2})\\ g(p) &= p^k-2p^{k-1}+p^{k-2}\\ g(p) &= (p-1)^2p^{k-2}\\ \end{align*}这样的话就可以用线性筛递推求得g(n)#include <bits/stdc++.h> const int...
题目链接:https://loj.ac/problem/2000到这里为止时间复杂度显然是$O(TN^{2})$可以获得30分。那要AC我们就得继续对上式进行变形。设$i=dk$并带入下式并变形得显然这个表达式可以O(NlogN)的求出前缀积。然后我们根据这个表达式的性质再使用整数分块,然后就可以在$O(T\sqrt{N}logN)$内求出答案。代码:#include <bits/st...
整除分块在数论中经常会出现如下表达式:显然我们直接计算的时间复杂度为$O(N)$,于是我们需要一种拥有更优时间复杂度的算法。通过打表我们可以发现。改表达式具有一些特殊的性质。1.$\lfloor \frac{N}{i} \rfloor$最多只有$2\sqrt{N}$种取值证明:对于$i\leq\sqrt{N}$,只有$\sqrt{N}$种取值,对于$\sqrt{N}$,同样也只有$\sqrt...