解:

神奇的一批......参观yyb巨神的博客

大致思路就是第一步枚举gcd,发现后面有个限制是gcd=1,用反演,得到的F(x)是两个等差数列求积。

然后发现有个地方我们除法的除数是乘积,于是换元枚举那个乘积。提到最前面。

稍微化一下,发现后面有个Id * miu,这个东西化成phi。

然后得到一个式子,前半部分是s2(n/i)这个整除分块,后面就要相应的求这个东西i2phi[i]的前缀和来迎合整除分块。

然后就是杜教筛,先设个g,把h(n)写出来发现要消掉一个d2,于是g(x) = x2

没了。

 #include <cstdio>
#include <map> typedef long long LL;
const int N = , T = ; LL MO; inline LL qpow(LL a, LL b) {
LL ans = ;
while(b) {
if(b & ) ans = ans * a % MO;
a = a * a % MO;
b = b >> ;
}
return ans;
} std::map<LL, LL> mp;
int p[N], top, phi[N];
LL F[N], inv2, inv6;
bool vis[N]; inline void getp(int n) {
phi[] = ;
for(int i = ; i <= n; i++) {
if(!vis[i]) {
p[++top] = i;
phi[i] = i - ;
}
for(int j = ; j <= top && i * p[j] <= n; j++) {
vis[i * p[j]] = ;
if(i % p[j] == ) {
phi[i * p[j]] = phi[i] * p[j];
break;
}
phi[i * p[j]] = phi[i] * (p[j] - );
}
}
for(int i = ; i <= n; i++) {
F[i] = (F[i - ] + (1ll * i * i % MO * phi[i] % MO)) % MO;
}
return;
} inline LL s2(LL x) { /// sum[1~n] ^ 2
x %= MO;
LL temp = (x + ) * x / % MO;
return temp * temp % MO;
} inline LL H(LL x) { /// sum of n^3
return s2(x);
} inline LL G(LL x) { /// sum of n^2
x %= MO;
return (x << | ) % MO * (x + ) % MO * x % MO * inv6 % MO;
} LL getF(LL x) {
if(x <= ) return ;
if(x <= T) return F[x];
if(mp.count(x)) return mp[x];
LL ans = H(x);
for(LL i = , j; i <= x; i = j + ) {
j = x / (x / i);
ans -= (G(j) - G(i - ) + MO) % MO * getF(x / i) % MO;
ans = (ans % MO + MO) % MO;
}
return mp[x] = ans;
} int main() {
LL n;
scanf("%lld%lld", &MO, &n);
getp(T);
inv6 = qpow(, MO - );
inv2 = (MO + ) / ; LL ans = ;
for(LL i = , j; i <= n; i = j + ) {
j = n / (n / i);
ans += s2(n / i) * (getF(j) - getF(i - ) + MO) % MO;
ans = (ans % MO + MO) % MO;
}
printf("%lld\n", ans);
return ;
}

AC代码

洛谷P3768 简单的数学题的更多相关文章

  1. 洛谷 P3768 简单的数学题 解题报告

    P3768 简单的数学题 题目描述 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数\(n\)和一个整数\(p,\)你需要求出\((\sum_{i=1}^n\sum_{j=1}^n ijgc ...

  2. 【刷题】洛谷 P3768 简单的数学题

    题目描述 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数n和一个整数p,你需要求出(\(\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j))~mod~p\),其中gcd ...

  3. 洛谷 - P3768 - 简单的数学题 - 欧拉函数 - 莫比乌斯反演

    https://www.luogu.org/problemnew/show/P3768 \(F(n)=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}ijgcd(i ...

  4. 洛谷 P3768 简单的数学题

    https://www.luogu.org/problemnew/show/P3768 化简一下式子,就是$\sum_{d=1}^ncalc(d)d^2\varphi(d)$ 其中$calc(d)=\ ...

  5. 洛谷P3768 简单的数学题(莫比乌斯反演+狄利克雷卷积+杜教筛)

    传送门 不会…… 两篇加在一起都看不懂…… https://www.cnblogs.com/cellular-automaton/p/8241128.html https://www.luogu.or ...

  6. 洛谷P3768 简单的数学题 【莫比乌斯反演 + 杜教筛】

    题目描述 求 \[\sum\limits_{i=1}^{n} \sum\limits_{j=1}^{n} i*j*gcd(i,j) \pmod{p}\] \(n<=10^{10}\),\(p\) ...

  7. 洛谷P3768 简单的数学题 莫比乌斯反演+杜教筛

    题意简述 求出这个式子 \[ \sum_{i=1}^n\sum_{j=1}^n ij(i,j) \bmod p \] 做法 先用莫比乌斯反演拆一下式子 \[ \begin{split} \sum_{i ...

  8. 洛谷 P3768 简单的数学题 (莫比乌斯反演)

    题意:求$(\sum_{i=1}^{n}\sum_{j=1}^{n}ijgcd(i,j))mod p$(p为质数,n<=1e10) 很显然,推式子. $\sum_{i=1}^{n}\sum_{j ...

  9. 洛谷P3768 简单的数学题解题报告

    $$\begin{eqnarray}&\sum_{i=1}^{n}\sum_{j=1}^{n}ij\gcd(i,j)\\&\sum_{d=1}^{n}\sum_{i=1}^{n}\su ...

随机推荐

  1. python2.6升级到3.3.0 以及依赖库在迁移时的处理

    线上服务器python版本默认是2.6,由于业务程序要求,需要将python升级到3.3.0, 操作记录如下: Cenots6.8默认安装的是2.6版本,要更新升级需安装下gcc: [root@ope ...

  2. HDU 3537 Daizhenyang's Coin

    链接 [http://acm.hdu.edu.cn/showproblem.php?pid=3537] 题意 题意:已知一排硬币中有n个硬币正面朝上,输入正面朝上的硬币的位置ai.两人轮流操作, 每次 ...

  3. action中session的存取

    存 ActionContext.getContext().getSession().put("teacherlist", teacherlist); 取 teacherlist=( ...

  4. Alpha冲刺之事后诸葛亮

    组长博客 作业博客 项目Postmortem 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件针对的是福大学子来到食堂会犹豫不决无法决定吃什么 ...

  5. 【转】STM32和ARM的区别

    转自:http://www.cnblogs.com/nuc-boy/archive/2012/09/11/2680157.html 这个问题大概2009年的时候很多人就在问,请看09年的时候大家给出的 ...

  6. Beta冲刺随笔汇总

    项目Beta冲刺(团队) Beta冲刺随笔汇总 姓名 学号 博客链接 何守成 031602408 http://www.cnblogs.com/heshoucheng/ 黄锦峰 031602411 h ...

  7. mybatis 框架网站

    http://www.mybatis.org/mybatis-3/zh/index.html

  8. sublime text3修改默认配置文件是失败的解决方法

    如果你修改sublime text3的默认配置文件Preferences.sublime-settings失败,现实的错误信息如下图: 其实根据提示信息就好找问题出在哪里了:权限 要想成功的修改默认配 ...

  9. js获取属性

    js获取属性的方法: document.getElementById(); document.getElementsByTagname(); document.getElementsByClassna ...

  10. mysql 表注释的添加、查看 、修改

    表创建时添加注释: create table user( id  int not null default  0 comment '用户id', account varchar(20) not nul ...