Description

Given \(n\), calculate the sum \(LCM(1,n) + LCM(2,n) + \cdots + LCM(n,n)\), where \(LCM(i,n)\) denotes the Least Common Multiple of the integers \(i\) and \(n\).

Input

The first line contains \(T\) the number of test cases. Each of the next \(T\) lines contain an integer \(n\).

Output

Output \(T\) lines, one for each test case, containing the required sum.

Sample Input

3

1

2

5

Sample Output

1

4

55

HINT

\(1 \le T \le 300000\)

\(1 \le n \le 1000000\)

题目求$$\sum_{i=1}^{n}LCM(i,n)$$

根据\(LCM\)的公式,即$$\sum_{i=1}^{n}\frac{i \times n}{GCD(i,n)}$$

我们枚举\(GCD\)——\(g\),即$$\sum_{g=1}^{n}[g \mid n]n \sum_{i=1}^{n}i[GCD(i,n)=g]$$

化简一下,转而求$$\sum_{g=1}^{n}[g \mid n]n \sum_{i=1}^{n}i[GCD(\frac{i}{g},\frac{n}{g})=1]$$

变化一下\(i\)的范围:$$\sum_{g=1}^{n}[g \mid n]n \sum_{i=1}^{\frac{n}{g}}i[GCD(i,\frac{n}{g})=1]$$

\(\sum_{i=1}^{\frac{n}{g}}i[GCD(i,\frac{n}{g})=1]\)即\(\frac{n}{g}\)内与之互质的数的和,这个有个公式:$$\sum_{i=1}^{n}i[GCD(n,i)=1]= \frac{\phi(n) \times n}{2}$$

如何证明,假设某个数\(a\)与\(n\)互质,那么\(n-a\)一定也与\(n\)互质,这样的数一共有\(\phi(n)\)个,于是得证,但在\(n=1\)是要特判,于是这个式子就出来了。$$\sum_{i=1}{n}LCM(i,n)=\sum_{g=1}{n}[g \mid n]n \frac{\phi(\frac{n}{g}) \times \frac{n}{g} }{2}$$

#include<cstdio>
#include<cstdlib>
using namespace std; typedef long long ll;
#define maxn (1000010)
bool exist[maxn]; int n,phi[maxn],prime[maxn],tot; inline void ready()
{
phi[1] = 1;
for (int i = 2;i < maxn;++i)
{
if (!exist[i]) phi[i] = i-1,prime[++tot] = i;
for (int j = 1;j <= tot;++j)
{
if (i*prime[j] >= maxn) break;
exist[i*prime[j]] = true;
if (i % prime[j] == 0) { phi[i*prime[j]] = phi[i]*prime[j]; break; }
else phi[i*prime[j]] = phi[i]*phi[prime[j]];
}
}
}
inline ll calc(int g)
{
if (g == 1) return 1;
return ((ll)phi[g]*(ll)g>>1);
} int main()
{
freopen("2226.in","r",stdin);
freopen("2226.out","w",stdout);
ready();
int T; scanf("%d",&T);
while (T--)
{
scanf("%d",&n);
ll ans = 0;
for (int g = 1;g * g <= n;++g)
if (n % g == 0)
{
ans += (ll)n*calc(n / g);
if (g * g != n) ans += (ll)n*calc(g);
}
printf("%lld\n",ans);
}
fclose(stdin); fclose(stdout);
return 0;
}

BZOJ 2226 LCMSum的更多相关文章

  1. bzoj 2226 LCMSum 欧拉函数

    2226: [Spoj 5971] LCMSum Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1123  Solved: 492[Submit][S ...

  2. BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论

    BZOJ 2226 [Spoj 5971] LCMSum 这道题和上一道题十分类似. \[\begin{align*} \sum_{i = 1}^{n}\operatorname{LCM}(i, n) ...

  3. bzoj 2226: [Spoj 5971] LCMSum 数论

    2226: [Spoj 5971] LCMSum Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 578  Solved: 259[Submit][St ...

  4. BZOJ 2226 【SPOJ 5971】 LCMSum

    题目链接:LCMSum 这个题显然就是要我们推式子了……那么就来推一波: \begin{aligned}&\sum_{i=1}^n lcm(i,n) \\=&\sum_{i=1}^n\ ...

  5. BZOJ 2226 [Spoj 5971] LCMSum | 数论拆式子

    题目: http://www.lydsy.com/JudgeOnline/problem.php?id=2226 题解: 题目要求的是Σn*i/gcd(i,n) i∈[1,n] 把n提出来变成Σi/g ...

  6. BZOJ 2226: [Spoj 5971] LCMSum 莫比乌斯反演 + 严重卡常

    Code: #pragma GCC optimize(2) #include<bits/stdc++.h> #define setIO(s) freopen(s".in" ...

  7. BZOJ 2226 [Spoj 5971] LCMSum

    题解:枚举gcd,算每个gcd对答案的贡献,贡献用到欧拉函数的一个结论 最后用nlogn预处理一下,O(1)出答案 把long long 打成int 竟然没看出来QWQ #include<ios ...

  8. 莫比乌斯反演&各种筛法

    不学莫反,不学狄卷,就不能叫学过数论 事实上大概也不是没学过吧,其实上赛季头一个月我就在学这东西,然鹅当时感觉没学透,连杜教筛复杂度都不会证明,所以现在只好重新来学一遍了(/wq 真·实现了水平的负增 ...

  9. BZOJ2226: [Spoj 5971] LCMSum

    题解: 考虑枚举gcd,然后问题转化为求<=n且与n互质的数的和. 这是有公式的f[i]=phi[i]*i/2 然后卡一卡时就可以过了. 代码: #include<cstdio> # ...

随机推荐

  1. thinkphp实现模糊匹配(学习贵哥代码)

    模板文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  2. android自定义TabWidget

    在做项目的时候,需要用到这个选项卡,刚开始看了系统的tabwidget,囧了,底边有黑线不说,还不美观,扒了好多的网页发现前辈做的能够满足自己的需求,将代码修改了下,就能用喽,伟人说过,站在前辈的肩膀 ...

  3. Qt学习之路(34): 国际化(下)

      原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://devbean.blog.51cto.com/448512/245063 上次 ...

  4. rpm安装mysql 默认安装目录

    MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件.配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为Linux本身的目录结构就比较 ...

  5. winform windowsmediaplayer的属性

    首先将C:\WINDOWS\system32下的wmp.dll应用到项目中: WMPLib.WindowsMediaPlayerClass player = new WMPLib.WindowsMed ...

  6. 获得Radio选中的后面文本框的值

    例如: 选中的radio的值在button中显示 代码如下: <!DOCTYPE html> <html lang="en" xmlns="http:/ ...

  7. CSS background-position随笔

    1.定义和用法 background-position 属性设置背景图像的起始位置. 这个属性设置背景原图像(由 background-image 定义)的位置,背景图像如果要重复,将从这一点开始. ...

  8. PHP 时间函数集合

    计算指定日期的前几天,几个月或者几年的函数 $a = '2014/08/21';echo date( "Y-m-d", strtotime( "-6 month  &qu ...

  9. 当前时间 js

    当前时间-倒计时下载 效果: 代码: <!doctype html> <html> <head> <meta http-equiv="Content ...

  10. 第三部分 关于HHibernate中关键字ID的配置

    实体类映射中,必须配置一个关键字,对应着数据表的关键字,大多数的实体类也都有一个属性表示类的唯一性,在实体类配置文件(.hbm.xml)中,<id>元素的就是这个作用. 一个完整的ID配置 ...