https://www.luogu.org/problemnew/show/P3768

化简一下式子,就是$\sum_{d=1}^ncalc(d)d^2\varphi(d)$

其中$calc(d)=\frac{({\lfloor}\frac{n}{d}{\rfloor}+1)^2{{\lfloor}\frac{n}{d}{\rfloor}}^2}{4}$

可以对calc(d)做整除分块,那么要求$d^2\varphi(d)$的前缀和

看一眼数据范围,大概要杜教筛

凑了一会,发现令$f(d)=d^2\varphi(d)$,$g(d)=d^2$,$h=f*g$,那么$h(n)=n^2\sum_{d|n}\varphi(d)=n^3$

(也就是说$id^3=id^2\varphi*id^2$,好神奇啊)

那么就好办了,$n^3$的前缀和是有公式的($1^3+2^3+..+n^3=(1+2+..+n)^2$)

杜教筛那个式子套一下就行了。。也可以预处理一点前缀和

复杂度?...不会算

以下是瞎扯:

设预处理1-K

算一次x,复杂度是$f(x)=\sum_{i=1}^{x/K}\sqrt{\frac{x}{i}}=O(\frac{x}{\sqrt{K}})$

后半部分复杂度是$\sum_{i=1}^{n/K}f(\frac{n}{i})=nK^{-\frac{1}{2}}\sum_{i=1}^{n/K}\frac{1}{i}=nK^{-\frac{1}{2}}log(n/K)$

总复杂度是$nK^{-\frac{1}{2}}log(n/K)+K$

当$K=n^{\frac{2}{3}}$时,复杂度是$n^{\frac{2}{3}}log$

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<map>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
ll md;
ll H(ll n)
{
__int128 t=__int128(n+)*n/%md;
return t*t%md;
}
ll G(ll n)
{
return __int128(n)*(n+)*(*n+)/%md;
}
ll Mod(ll n,ll d=md)
{
if(n>=) return n%d;
else if(n%d==) return ;
else return d+n%d;
}
const ll K=;
ll HH[K+],prime[K+],len;
bool nprime[K+];
map<ll,ll> ma;
ll calc(ll n)
{
if(n<=K) return HH[n];
if(ma.count(n)) return ma[n];
ll i,j,ans=H(n);
for(i=;i<=n;i=j+)
{
j=n/(n/i);
ans=Mod(ans-Mod(G(j)-G(i-))*calc(n/i)%md);
}
return ma[n]=ans;
}
ll n;
ll X(ll d)
{
__int128 t=__int128(n/d+)*(n/d)/%md;
return t*t%md;
}
ll ans;
int main()
{
ll i,j;
//md=1000000007;
scanf("%lld%lld",&md,&n);
HH[]=;
for(i=;i<=K;i++)
{
if(!nprime[i]) {prime[++len]=i;HH[i]=i-;}
for(j=;j<=len&&i*prime[j]<=K;j++)
{
nprime[i*prime[j]]=;
if(i%prime[j]==)
{
HH[i*prime[j]]=HH[i]*prime[j];
break;
}
else
HH[i*prime[j]]=HH[i]*(prime[j]-);
}
}
for(i=;i<=K;i++) HH[i]=HH[i]*i%md*i%md;
for(i=;i<=K;i++) HH[i]=(HH[i-]+HH[i])%md;
// while(1)
// {
// scanf("%lld",&n);
// printf("%lld\n",calc(n));
// }
for(i=;i<=n;i=j+)
{
j=n/(n/i);
ans=(ans+X(i)*Mod(calc(j)-calc(i-))%md)%md;
}
printf("%lld",ans);
return ;
}

洛谷 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 简单的数学题

    解: 神奇的一批......参观yyb巨神的博客. 大致思路就是第一步枚举gcd,发现后面有个限制是gcd=1,用反演,得到的F(x)是两个等差数列求积. 然后发现有个地方我们除法的除数是乘积,于是换 ...

  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. java中InputStream String

    Java 中获取输入流时,有时候须要将输入流转成String,以便获取当中的内容 ,以下总结一下 InputStream 转成String 的方式  方法1: public String conver ...

  2. 中国vs美国制造业公司营业额大排名,看看哪些属于美国制造业的优势产业(中美旗鼓相当,而且还有本土制造的优势)

    当然,所谓的美国制造业,大量的东西现在 在中国制造和生产,但这里列举的,主要是卖实体工业产品为主的美国公司这个榜单里主要列出以工业产品销售为主的公司. 所以各大能源巨头虽然本身也是装备制造大户,但没被 ...

  3. poj 3585 Accumulation Degree(二次扫描和换根法)

    Accumulation Degree 大致题意:有一棵流量树,它的每一条边都有一个正流量,树上所有度数为一的节点都是出口,相应的树上每一个节点都有一个权值,它表示从这个节点向其他出口可以输送的最大总 ...

  4. mysql优化----explain的列分析

    sql语句优化: : sql语句的时间花在哪儿? 答: 等待时间 , 执行时间. 等待时间:看是不是被锁住了,那就不是语句层面了是服务端层面了,看连接数内存. 执行时间:到底取出多少行,一次性取出1万 ...

  5. Vijos P1389婚礼上的小杉

    背景 小杉的幻想来到了经典日剧<求婚大作战>的场景里……他正在婚礼上看幻灯片,一边看着可爱的新娘长泽雅美,一边想,如果能再来一次就好了(-.-干嘛幻想这么郁闷的场景……). 小杉身为新一代 ...

  6. (C)理解#define write(b,addr) (void)((*(volatile unsigned int *) (addr)) = (b))

      理解 #define write(b,addr) (void)((*(volatile unsigned int *) (addr)) = (b)) 嵌入式系统编程,要求程序员能够利用C语言访问固 ...

  7. POJ1077 Eight —— IDA*算法

    主页面:http://www.cnblogs.com/DOLFAMINGO/p/7538588.html 代码一:像BFS那样,把棋盘数组放在结构体中. #include <iostream&g ...

  8. vscode——配置终端集成bash和cmd

    前言 配置后bash和cmd是集成的,输入bash回车则进入bash,输入cmd回车则进入cmd 步骤 首先肯定是需要打开我们的vscode咯~ 进入终端设置 配置shell路径 根据自己的系统来复制 ...

  9. 广大暑假训练1(poj 2488) A Knight's Journey 解题报告

    题目链接:http://vjudge.net/contest/view.action?cid=51369#problem/A   (A - Children of the Candy Corn) ht ...

  10. html5--6-14 CSS3中的颜色表示方式

    html5--6-14 CSS3中的颜色表示方式 实例 每个参数 (red.green 以及 blue) 定义颜色的强度,可以是介于 0 与 255 之间的整数,或者是百分比值(从 0% 到 100% ...