【传送门】

求$$\sum_{i=1}^{n} \gcd(\lfloor \sqrt[3]{i} \rfloor, i)$$
题解写的很清楚,自己重新推一推。

$$\sum_{i=1}^{n} \gcd(\lfloor \sqrt[3]{i} \rfloor, i)$$

$$=\sum_{a=1}^{\lfloor\sqrt[3]{n}\rfloor}\sum_{i=1}^{n}\gcd(a, i)[\sqrt[3]{i}=a]$$

$$=\sum_{a=1}^{\lfloor\sqrt[3]{n}\rfloor}\sum_{i=a^3}^{\min\{(a+1)^3-1,n\}}\gcd(a,i)$$

$$=\sum_{i=\lfloor \sqrt[3]{n} \rfloor ^3}^{n}\gcd(\sqrt[3]{n}, i)+\sum_{a=1}^{r}\sum_{i=a^3}^{(a+1)^3-1}\gcd(a,i)$$

其中 $r = \sqrt[3]{n}-1$
设 $f(n,a)=\sum_{i=1}^{n}\gcd(i, a)$
$$f(n,a)=\sum_{i=1}^{n}\gcd(i,a)$$
$$=\sum_{d|a}d\sum_{i=1}^{n}[\gcd(i,a)=d]$$
$$=\sum_{d|a}d\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}[\gcd(i, \frac{a}{d}) =1]$$
$$=\sum_{d|a}d\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}\sum_{p|\gcd(i,\frac{a}{d})}\mu(p)$$
$$=\sum_{d|a}d\sum_{p|\frac{a}{d}}\mu(p)\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor}[p|i]$$
$$=\sum_{d|a}d\sum_{p|\frac{a}{d}}\mu(p)\lfloor \frac{n}{pd} \rfloor$$
$$=\sum_{T|a}\lfloor \frac{n}{T}\rfloor\sum_{p|T}\mu(p)\frac{T}{p}$$
$$=\sum_{T|a}\lfloor \frac{n}{T}\rfloor \varphi(T)$$
第一部分可以 $O(\sqrt{n})$ 解决。

将 $f(n, a)$ 带入第二部分得
$$\sum_{a=1}^r \sum_{i=a}^{(a+1)^3-1}\gcd(a,i)$$
$$=\sum_{a=1}^{r}\sum_{T|a}(\lfloor\frac{(a+1)^3-1}{T}\rfloor - \lfloor\frac{a^3-1}{T}\rfloor)\varphi(T)$$
$$=\sum_{T = 1}^{r}\varphi(T)\sum_{b=1}^{\lfloor\frac{r}{T}\rfloor}(\lfloor\frac{(bT+1)^3-1}{T} \rfloor-\lfloor\frac{(bT)^3-1}{T} \rfloor)$$
$$=\sum_{T=1}^{r}\varphi(T)\sum_{b=1}^{\lfloor\frac{r}{T}\rfloor}(\lfloor b^3T^2+3b^2T+3b\rfloor-\lfloor b^3T^2-\frac{1}{T}\rfloor)$$
$$=\sum_{T=1}^{r}\varphi(T)\sum_{b=1}^{\lfloor\frac{r}{T}\rfloor}(3b^2T+3b+1)$$
$$=\sum_{T=1}^{r}\varphi(T)(3T\sum_{b=1}^{\lfloor\frac{r}{T}\rfloor}b^2+3\sum_{b=1}^{\lfloor\frac{r}{T}\rfloor}b + \lfloor\frac{r}{T}\rfloor)$$

这部分 $O(r)$ 解决。

用太多int128会T。

#include <bits/stdc++.h>

namespace IO {
void read() {}
template <typename T, typename... T2>
inline void read(T &x, T2 &... oth) {
T f = ; x = ;
char ch = getchar();
while (!isdigit(ch)) { if (ch == '-') f = -; ch = getchar(); }
while (isdigit(ch)) { x = x * + ch - ; ch = getchar(); }
x *= f;
read(oth...);
}
}
#define read IO::read
#define print IO::print
#define ll long long
#define int128 __int128 const int MOD = ;
const int inv6 = , inv2 = ;
const int N = 1e7 + ;
int prime[N], phi[N], prin;
bool vis[N]; void init() {
phi[] = ;
for (int i = ; i < N; i++) {
if (!vis[i]) { prime[++prin] = i; phi[i] = i - ; }
for (int j = ; j <= prin && i * prime[j] < N; j++) {
vis[i * prime[j]] = ;
if (i % prime[j] == ) {
phi[i * prime[j]] = prime[j] * phi[i];
break;
}
phi[i * prime[j]] = phi[i] * phi[prime[j]];
}
}
} int root3(int128 n) {
int l = , r = 1e7 + ;
int ans = ;
while (l <= r) {
int128 mid = (l + r) / ;
if (mid * mid * mid <= n) l = mid + , ans = mid;
else r = mid - ;
}
return ans;
} template<class T>
T gcd(T a, T b) {
while (b) {
a %= b;
std::swap(a, b);
}
return a;
} void M(int &a) {
if (a < ) a += MOD;
if (a >= MOD) a -= MOD;
} int f(int128 n, int a) {
int ans = ;
for (int i = ; 1LL * i * i <= a; i++) {
if (a % i) continue;
int128 temp = n / i * phi[i] % MOD;
M(ans += temp);
if (a == i * i) continue;
int j = a / i;
temp = n / j * phi[j] % MOD;
M(ans += temp);
}
return ans;
} int sum_squr(int n) {
int ans = 1LL * n * (n + ) % MOD * ( * n + ) % MOD * inv6 % MOD;
return ans;
} int sum(int n) {
return 1LL * n * (n + ) / % MOD;
} int main() {
init();
int T;
read(T);
while (T--) {
int128 n;
read(n);
if (n <= ) {
int ans = ;
for (int i = ; i <= n; i++)
ans += gcd(, i);
printf("%d\n", ans);
continue;
}
int r = root3(n);
int128 rr = (int128)r * r * r;
int ans = f(n, r) - f(rr - , r);
M(ans);
r--;
for (int i = ; i <= r; i++) {
int y = r / i;
int temp = 3LL * i * sum_squr(y) % MOD;
M(temp += 3LL * sum(y) % MOD);
M(temp += y);
temp = 1LL * temp * phi[i] % MOD;
M(ans += temp);
}
printf("%d\n", ans);
}
return ;
}

HDU 6588 Function的更多相关文章

  1. HDU 5608 function [杜教筛]

    HDU 5608 function 题意:数论函数满足\(N^2-3N+2=\sum_{d|N} f(d)\),求前缀和 裸题-连卷上\(1\)都告诉你了 预处理\(S(n)\)的话反演一下用枚举倍数 ...

  2. HDU 5608 - function

    HDU 5608 - function 套路题 图片来自: https://blog.csdn.net/V5ZSQ/article/details/52116285 杜教筛思想,根号递归下去. 先搞出 ...

  3. HDU 6038 - Function | 2017 Multi-University Training Contest 1

    /* HDU 6038 - Function [ 置换,构图 ] 题意: 给出两组排列 a[], b[] 问 满足 f(i) = b[f(a[i])] 的 f 的数目 分析: 假设 a[] = {2, ...

  4. 洛谷P1464 Function  HDU P1579 Function Run Fun

    洛谷P1464 Function HDU P1579 Function Run Fun 题目描述 对于一个递归函数w(a,b,c) 如果a≤0 or b≤0 or c≤0就返回值11. 如果a> ...

  5. [2019HDU多校第一场][HDU 6588][K. Function]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6588 题目大意:求\(\sum_{i=1}^{n}gcd(\left \lfloor \sqrt[3] ...

  6. HDU 5875 Function 【倍增】 (2016 ACM/ICPC Asia Regional Dalian Online)

    Function Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  7. 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  8. HDU 5875 Function 优先队列+离线

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5875 Function Time Limit: 7000/3500 MS (Java/Others) ...

  9. HDU 5875 Function(RMQ-ST+二分)

    Function Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total ...

随机推荐

  1. 正睿暑期培训day1考试

    链接 A 理解一下题意,然后玩几组样例就能发现,实际上就是\(k\)个\(i\)等价于\(1\)个\(i-1\).所以就类似于\(k\)进制进行进位,如果最后\(0\)位上不是\(0\),那么就存在划 ...

  2. phpize安装PHP扩展

    安装编译完成php源码后忘记安装一些扩展可以通过phpize来安装 拿lnmp1.6安装举例 安装完成lnmp后发现有些扩展没有 lnmp1.6的安装脚本会在lnmp1.6里生成src,里面是lnmp ...

  3. 《一起学mysql》3

    索引和查询优化   为什么要索引? 想想我们上小学的时候是怎么查字典的,比方查 理想的 “理”,首先在索引里找到声母 “l”,再找到 “li” 找到 “li”所在的页数,   我们之前建的所有mysq ...

  4. mysql 创建用户, 分配权限, 删除用户

    通过create user 命令来创建用户, 有两种方式:(只介绍通过 create user 命令, 直接往user表中插入数据的方式,这里就不说了) 创建用户的同时, 指定用户可登录的主机和密码 ...

  5. python asyncio as_completed

    #asyncio 没有提供http协议的接口 aiohttp import asyncio import socket from urllib.parse import urlparse async ...

  6. idea中的后缀补全

    IDEA有个很牛逼的功能,那就是后缀补全(Postfix Completion),这个功能可以通过后缀来使用代码补全进行模板式地补全语句,如遍历循环语句(for.foreach).使用 String. ...

  7. RocketMQ多master多salve集群搭建

    一.RocketMQ集群模式简介 单Master方式 风险比较大, 一旦Broker重启或者宕机, 将导致整个环境不可用, 不建议线上使用. 多Master模式 一个集群中没有slave, 全是mas ...

  8. Window权限维持(八):时间服务器

    Windows操作系统正在利用时间提供者体系结构,以便从网络中的其他网络设备或客户端获取准确的时间戳.时间提供者以DLL文件的形式实现,该文件位于System32文件夹中.Windows启动期间将启动 ...

  9. C#工具类SqlServerHelper,基于System.Data.SqlClient封装

    源码: using System; using System.Collections.Generic; using System.Data; using System.Linq; using Syst ...

  10. IIS错误:在唯一密钥属性“fileExtension”设置为“.json”时,无法添加类型为“mimeMap”的重复集合项

    在用visual studio 打开一个asp.net mvc 项目时,ctrl+f5运行,发现页面无法加载图片.js.json文件. 按F12查看错误,发现500错误.打开报错的js文件,提示: I ...