luogu P1891 疯狂LCM
嘟嘟嘟
这题跟上一道题有点像,但是我还是没推出来……菜啊
ans
&= \sum_{i = 1} ^ {n} \frac{i * n}{gcd(i, n)} \\
&= n * \sum_{d | n} \sum_{i = 1} ^ {n} [gcd(i, n) = d] * \frac{i}{d} \\
&= n * \sum_{d | n} \sum_{i = 1} ^ {\frac{n}{d}} [gcd(i, n) = 1] * i \\
\end{align*}\]
令\(f(n)\)表示小于等于\(n\)且与\(n\)互质的数的和,则
ans
&= n * \sum_{d | n} f(\frac{n}{d}) \\
&= n * \sum_{d | n} f(d)
\end{align*}\]
如果\(i\)与\(n\)互质,那么\(n - i\)一定也和\(n\)互质,所以\(\varphi(n)\)个数两两配对等于\(n\),得到\(f(n) = \frac{\varphi(n) * n}{2}\)。
但是这对\(1\)不成立,因此要特别处理\(f(1) = 1\),于是
\]
这个时候可以每一次\(O(\sqrt{n})\)枚举\(n\)的约数,总复杂度\(O(n + T *\sqrt{n} )\),但是还可以再优化:我们像埃氏筛素数一样,\(O(n \log{n})\)预处理\(f(i)\)。然后\(O(1)\)询问。
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<vector>
#include<stack>
#include<queue>
using namespace std;
#define enter puts("")
#define space putchar(' ')
#define Mem(a, x) memset(a, x, sizeof(a))
#define rg register
typedef long long ll;
typedef double db;
const int INF = 0x3f3f3f3f;
const db eps = 1e-8;
const int maxn = 1e6 + 5;
inline ll read()
{
ll ans = 0;
char ch = getchar(), last = ' ';
while(!isdigit(ch)) last = ch, ch = getchar();
while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
if(last == '-') ans = -ans;
return ans;
}
inline void write(ll x)
{
if(x < 0) x = -x, putchar('-');
if(x >= 10) write(x / 10);
putchar(x % 10 + '0');
}
int n;
int prim[maxn], v[maxn], phi[maxn];
ll ans[maxn];
void init()
{
phi[1] = 1;
for(int i = 2; i < maxn; ++i)
{
if(!v[i]) v[i] = i, phi[i] = i - 1, prim[++prim[0]] = i;
for(int j = 1; j <= prim[0] && i * prim[j] < maxn; ++j)
{
v[i * prim[j]] = prim[j];
if(i % prim[j] == 0)
{
phi[i * prim[j]] = phi[i] * prim[j];
break;
}
else phi[i * prim[j]] = phi[i] * (prim[j] - 1);
}
}
for(int i = 1; i < maxn; ++i)
for(int j = 1; i * j < maxn; ++j)
ans[i * j] += (ll)phi[i] * i;
for(int i = 1; i < maxn; ++i) ans[i] = (ans[i] + 1) * i >> 1;
}
int main()
{
init();
int T = read();
while(T--) n = read(), write(ans[n]), enter;
return 0;
}
luogu P1891 疯狂LCM的更多相关文章
- P1891 疯狂LCM
\(\color{#0066ff}{ 题目描述 }\) 众所周知,czmppppp是数学大神犇.一天,他给众蒟蒻们出了一道数论题,蒟蒻们都惊呆了... 给定正整数N,求LCM(1,N)+LCM(2,N ...
- 洛谷 - P1891 - 疯狂LCM - 线性筛
另一道数据范围不一样的题:https://www.cnblogs.com/Yinku/p/10987912.html $F(n)=\sum\limits_{i=1}^{n} lcm(i,n) $ $\ ...
- 题解:洛谷P1891 疯狂LCM
原题链接 题目描述 描述: 众所周知,czmppppp是数学大神犇.一天,他给众蒟蒻们出了一道数论题,蒟蒻们都惊呆了... 给定正整数N,求LCM(1,N)+LCM(2,N)+...+LCM(N,N) ...
- 洛谷 P1891 疯狂LCM 题解
原题链接 享受推式子的乐趣吧 数论真有趣! 庆祝:数论紫题第 \(3\) 道. \[\sum_{i=1}^n \operatorname{lcm}(i,n) \] \[= \sum_{i=1}^n \ ...
- 洛咕 【P1891】疯狂LCM & 三倍经验
经验给掉先: 经验*1 经验*2 经验*3 这里给个跑得比较慢的 \(n \sqrt n\) 预处理然后 \(O(1)\) 回答询问的做法 式子 首先我们推柿子: \[\begin{aligned}A ...
- luogu1891 疯狂lcm ??欧拉反演?
link 给定正整数N,求LCM(1,N)+LCM(2,N)+...+LCM(N,N). 多组询问,1≤T≤300000,1≤N≤1000000 \(\sum_{i=1}^nlcm(i,n)\) \( ...
- luogu P1616 疯狂的采药
题目背景 此题为NOIP2005普及组第三题的疯狂版. 此题为纪念LiYuxiang而生. 题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的 ...
- [Luogu1891]疯狂LCM[辗转相减法]
题意 多组询问,每次给定 \(n\) ,求:\(\sum_{i=1}^nlcm(i,n)\) . \(\rm T \leq 3\times 10^4\ ,n \leq 10^6\). 分析 推式子: ...
- 疯狂LCM
传送门 题目要求求: \[\sum_{i=1}^nlcm(i,n)\] 先转化成gcd处理: \[n\sum_{i=1}^n\frac{i}{gcd(i,j)}\] 之后老套路 枚举gcd,并且先把d ...
随机推荐
- 提供PPT嵌入Winform/WPF解决方案,Winform/WPF 中嵌入 office ppt 解决方案
Winform/WPF 中嵌入 office ppt(powerpoint)解决方案示: 1. 在winform中操作ppt,翻页.播放.退出:显示 总页数.当前播放页数 2. 启动播放ppt时录制视 ...
- Oracle11g自带的SQL_developer无法打开
在安装完Oracle Database 11g Release 2数据库,想试一下Oracle自带的SQL DeveloperW工具,在操作系统菜单的所有程序中找到SQL Developer如下所示, ...
- [日常] Go语言圣经--JSON习题2
练习 4.12: 流行的web漫画服务xkcd也提供了JSON接口.例如,一个 https://xkcd.com/571/info.0.json 请求将返回一个很多人喜爱的571编号的详细描述. 下载 ...
- 互联网自治域间IP源地址验证技术综述
一.文章信息 作者:贾溢豪,任罡,刘莹 单位:清华大学 来源:软件学报 时间:2017年 二.基于加密.签名及标记信息 2.1 技术原理 采用端到端验证的设计结构,其中以密钥协商最为常见.通信双方在事 ...
- HDU4565(SummerTrainingDay05-C 矩阵快速幂)
So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- pycharm虚拟环境
pycharm虚拟环境 1. 选择一个本地的空目录,---该目录就作为python虚拟环境目录, 2. 选择本地python安装目录: 3. 勾选该选项后则可以使用base interpreter中的 ...
- 图片链接转成base64
一半需要我的图像转换为base64字符串,这样我们可以把我的形象到服务器.现在我们提供一个js: function convertImgToBase64(url, callback, outputFo ...
- Python 调度算法 死锁 静动态链接 分页分段
1 select poll epoll的区别基本上select有3个缺点: 连接数受限查找配对速度慢数据由内核拷贝到用户态poll改善了第一个缺点 epoll改了三个缺点. (1)select,pol ...
- 【代码笔记】iOS-performSelectorOnMainThread
代码: RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewControl ...
- 令人血脉喷张的animate.css
都说html5.css3是大局是潮流,尽管css3也不难,学起来比较简单,但我还是喜欢他的轻量级集大成者的animate.css框架,初学的小伙伴们加油啦 下面我分析一下animate.css框架里面 ...