题目大意:

  求$\sum\limits_{i=1}^n\sum\limits_{j=1}^n[lcm(i,j)>n](n\leq 10^{10})$的值。

题解:

  这题貌似有n多种做法...

  为了更好统计,把原式变为$n^2-\sum\limits_{i=1}^n\sum\limits_{j=1}^n[lcm(i,j)\leq n]$。

  然后开始毒瘤...

  首先,考虑枚举$lcm(i,j)$,设为$d$,计算有多少对$i.j$的最小公倍数为$d$。

  设$i=p_1^{a_1}p_2^{a_2}\cdots p_k^{a_k}$,$tp(i)=k$

  再枚举$gcd(i,j)$,设为$x$,又由于$\frac{i}{gcd(i,j)}$和$\frac{j}{gcd(i,j)}$互质,那么要统计的就是把$\frac{d}{x}$拆成两个互质数的方案数。

  那么简单想一下,方案数就是$2^{tp(\frac{d}{x})}$,因为同一个质因子不能同时出现在两个数中。

  于是答案变为:

    $\sum\limits_{d=1}^n\sum\limits_{x|d}2^{tp(x)}$

  枚举$x$,即$\sum\limits_{x=1}^n2^{tp(x)}\lfloor\frac{n}{x}\rfloor$。

  然后我们发现$\lfloor\frac{n}{x}\rfloor$可以进行数论分块,所以需要求出$2^{tp(x)}$的前$n$项和。

  但是...我不会啊!!

  所以接下来我开始打表,然后我惊奇地发现:

    $2^{tp(x)}=\sum\limits_{t|x}\mu^2(t)$!!!(别问我是怎么发现的)

  带入原式,得:$\sum\limits_{x=1}^n\lfloor\frac{n}{x}\rfloor\sum\limits_{t|x}\mu^2(t)$

  反手枚举$t$,即$\sum\limits_{t=1}^n\mu^2(t)\sum\limits_{x=1}^{n/t}\lfloor\frac{n}{tx}\rfloor$

  另外,$\sum\limits_{i=1}^nd(i)=\sum\limits_{i=1}^n\lfloor\frac{n}{i}\rfloor$,其中$d(i)$表示$i$的约数个数。

  因此答案为:$\sum\limits_{t=1}^n\mu^2(t)\sum\limits_{x=1}^{n/t}d(x)$

  式子结束了,需要调用两层数论分块,还有要预处理出$\mu^2(t)$以及$d(x)$的部分前缀和。

  时间复杂度...我也不知道,大概在$O(n^{\frac{3}{4}})$左右吧...

  

#include<bits/stdc++.h>
#define mod 1000000007
#define ll long long
#define N 20000010
using namespace std;
int pr[N],mu[N],t[N],d[N];
ll n,ans;
bitset<N>vis;
void make(int m)
{
mu[] = d[] = ;
for(int i = ;i<=m;i++)
{
if(!vis[i])pr[++pr[]] = i,mu[i] = -,d[i] = ;
for(int j = ;i*pr[j]<=m;j++)
{
vis[i*pr[j]] = ;
d[i*pr[j]] = d[i]<<;
if(i%pr[j]==){d[i*pr[j]]-=d[i/pr[j]];break;}
mu[i*pr[j]] = -mu[i];
}
}for(int i = ;i<=m;i++)t[i] = t[i-]+mu[i]*mu[i],d[i] = (d[i]+d[i-])%mod;
}
ll S(ll m)//mu^2[i]前缀和
{
if(m<=)return t[m];
ll ret = ,tt = (ll)sqrt(m)+;
for(ll i = ;i<=tt;i++)ret+=mu[i]*(m/i/i);
return ret;
}
ll SS(ll m)//d(i)前缀和
{
if(m<=)return d[m];
ll ret = ,nxt;
for(ll i = ;i<=m;i = nxt+)
{
nxt = m/(m/i);
ret = (ret+(m/i)*(nxt-i+)%mod)%mod;
}return ret;
}
int main()
{
scanf("%lld",&n);
make();
ans = (n%mod)*(n%mod)%mod;
ll nxt;
for(ll i = ;i<=n;i = nxt+)
{
nxt = n/(n/i);
ans = (ans-(S(nxt)-S(i-))%mod*SS(n/i)%mod)%mod;
}printf("%lld\n",(ans+mod)%mod);
return ;
}

2019.10.18模拟赛T3的更多相关文章

  1. 2019.10.02模拟赛T3

    题目大意: 设$S(n,m)$为第二类斯特林数,$F_i$表示斐波那契数列第$i$项. 给定$n,R,K$,求$\sum\limits_{i=1}^{n}(\sum\limits_{m=1}^{R}F ...

  2. [10.18模拟赛] 序列 (DP)

    [10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...

  3. [10.12模拟赛] 老大 (二分/树的直径/树形dp)

    [10.12模拟赛] 老大 题目描述 因为 OB 今年拿下 4 块金牌,学校赞助扩建劳模办公室为劳模办公室群,为了体现 OI 的特色,办公室群被设计成了树形(n 个点 n − 1 条边的无向连通图), ...

  4. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

  5. 体育成绩统计——20180801模拟赛T3

    体育成绩统计 / Score 题目描述 正所谓“无体育,不清华”.为了更好地督促同学们进行体育锻炼,更加科学地对同学们进行评价,五道口体校的老师们在体育成绩的考核上可谓是煞费苦心.然而每到学期期末时, ...

  6. 20180520模拟赛T3——chess

    [问题描述] 小美很喜欢下象棋. 而且她特别喜欢象棋中的马. 她觉得马的跳跃方式很独特.(以日字格的方式跳跃) 小芳给了小美一张很大的棋盘,这个棋盘是一个无穷的笛卡尔坐标. 一开始\(time=0\) ...

  7. 2018.10.17NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 100 +100\) 实际得分:\(100 + 100 + 60\) 辣鸡模拟赛.. 5min切掉T1,看了一下T2 T3,感觉T3会被艹爆因为太原了.. 淦了20 ...

  8. 【2019.10.7 CCF-CSP-2019模拟赛 T3】未知的数组(unknown)(并查集+动态规划)

    预处理 考虑模数\(10\)是合数不好做,所以我们可以用一个常用套路: \(\prod_{i=l}^ra_i\equiv x(mod\ 10)\)的方案数等于\(\prod_{i=l}^ra_i\eq ...

  9. 【2019.8.6 慈溪模拟赛 T3】集合(set)(线段树上DP)

    线段树上\(DP\) 首先发现,每个数肯定是向自己的前驱或后继连边的. 则我们开一棵权值线段树,其中每一个节点记录一个\(f_{0/1,0/1}\),表示在这个区间左.右端点是否连过边的情况下,使这个 ...

随机推荐

  1. zipalign的使用

    zipalign 是一个存档对齐工具,可为Android应用程序(.apk)文件提供重要的优化.目的是确保所有未压缩数据以相对于文件开头的特定对齐开始.具体来说,它会导致.apk中的所有未压缩数据(如 ...

  2. 解决Maven无法下载fastdfs-client-java依赖

    异常信息:Missing artifact org.csource:fastdfs-client-java:jar:1.27-SNAPSHOT 解决方案:jar包在Maven的中央仓库中缺失,需要手动 ...

  3. 一个diango项目的结构

    一个项目的结构 day43项目 .idea 配置 pycharm自动帮配的配置,打开别人的diango项目时要先删了此项 app01 方便在一个大的Django项目中,管理实现不同的业务功能 migr ...

  4. Keepalived集群软件高级使用(工作原理和状态通知)

    1.介绍 Keeaplived主要有两种应用场景,一个是通过配置keepalived结合ipvs做到负载均衡(LVS+Keepalived),有此需求者可参考以往博文:http://lizhenlia ...

  5. Unity3D 截取6面图 做全景图脚本

    using System.Collections;using System.Collections.Generic;using UnityEditor;using UnityEngine; publi ...

  6. 闲话复数(1) | 不现实的虚数 i 为什么虚?它长成什么样?

    原文 | https://mp.weixin.qq.com/s/y-Nb3S508UZuf_0GtRuNaQ 复数的英文是complex number,直译是复杂的数.最早接触复数大概是在高中时期,只 ...

  7. Appium 1.15.1版本的appium-doctor不是内部或者外部命令的问题

    先讲一下整个app自动化环境的部署过程: 1.安装appium 2.安装nodejs 3.查看appium的环境是否完成 问题:安装appium和nodejs都没啥问题,直接到对应的官网下载然后安装即 ...

  8. 西北师大-2108Java】第十三次作业成绩汇总

    [西北师大-2108Java]第十三次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第15周学习指导及要求 实验目的与要求 (1)掌握菜单组件用途及常用API: (2)掌握对话框组件用途及常用 ...

  9. SpringBoot开发准备工作,保存备用,

    application.properties server.port=8080 spring.thymeleaf.prefix = classpath:/static/ spring.thymelea ...

  10. [译]Vulkan教程(15)图形管道基础之RenderPass

    [译]Vulkan教程(15)图形管道基础之RenderPass Render passes Setup 设置 Before we can finish creating the pipeline, ...