2018 南京网络预赛Sum - 线性筛
题意
定义 $f(x)$ 为满足以下条件的有序二元组 $(a, b)$ 的方案数(即 $(a, b)$ 与 $(b, a)$ 被认为是不同的方案):
- $x= ab$
- $a$ 和 $b$ 均无平方因子(即因子中没有除1之外的完全平方数)
求 $\displaystyle \sum_{i=1}^nf(i), 1 \leq n\leq 2 \times 10^7$.
分析
显然,$f(n)$ 是积性函数,考虑线性筛。
- 当 $x$为素数时, $f(x)=2$,即 $(1,x)$ 和 $(x,1)$;
- 当 $x$ 的最小质因子为 $p$,且 $p \nmid \frac{x}{p}$ 时,$f(x) = f(p)f(\frac{x}{p}) = 2f(\frac{x}{p})$;
- 当 $x$ 的最小的质因数为 $p$,且 $p \mid \frac{x}{p}$
- 如果 $p \mid \frac{x}{p^2}$,那么 $x$ 中的 $p$ 的指数至少为3,即不管如何划分 $(a, b)$,两个数中一定有一个数其 $p$ 的指数大于等于2,即不存在合法的方案
- 否则, $x$中 $p$ 的指数就为2,把这两个 $p$ 分别分给 $a$ 和 $b$,剩余的 $\frac{x}{p^2}$就是一个子问题,即 $f(x) = f(\frac{x}{p^2}) = f(\frac{x}{p})f(\frac{1}{p}) = f(\frac{x}{p})/2$
#include<bits/stdc++.h>
using namespace std; const int maxn = 2e7 + ;
int n;
int vis[maxn], primes[maxn], primeCnt;
int f[maxn], s[maxn]; //f(i)的前缀和 void seive()
{
f[] = ;
for(int i = ;i <= maxn;i++)
{
if(!vis[i])
{
primes[++primeCnt] = i;
f[i] = ;
}
for(int j=;j <= primeCnt && (long long)i * primes[j] <= maxn;j++)
{
vis[i *primes[j]] = true;
if(i % primes[j] == )
{
f[i *primes[j]] = (i / primes[j] % primes[j] == )? : f[i/primes[j]];
break;
}
else f[i * primes[j]] = f[i] * ;
}
}
} int main()
{
seive();
for(int i = ;i <= maxn;i++) s[i] = s[i-]+f[i]; int T;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
printf("%d\n", s[n]);
}
}
参考链接:https://oi.men.ci/jsk-30999/#%D0%B4%D0%B0%D0%BB%D0%B5%D0%B5
2018 南京网络预赛Sum - 线性筛的更多相关文章
- 2018 南京网络预赛Sum ——莫比乌斯反演
题意 设 $f(n)$ 为 $n=ab$ 的方案数,其中 $a,b$ 为无平方因子数.求 $\displaystyle \sum_{i=1}^nf(i)$,$n \leq 2e7$. 分析 显然,可 ...
- 2018 南京网络预赛Sum - 离线分段打表
题意 设 $f(n)$ 为 $n=ab$ 的方案数,其中 $a,b$ 为无平方因子数. 例如,$f(6)=4$,因为 $6 = 1 \times 6 = 2 \times 3 = 3 \times 2 ...
- ACM-ICPC 2018 南京赛区网络预赛 J题Sum(线性筛素数)
题目链接:https://nanti.jisuanke.com/t/30999 参考自博客:https://kuangbin.github.io/2018/09/01/2018-ACM-ICPC-Na ...
- 计蒜客 30999 - Sum - [找规律+线性筛][2018ICPC南京网络预赛J题]
题目链接:https://nanti.jisuanke.com/t/30999 样例输入258 样例输出814 题意: squarefree数是指不含有完全平方数( 1 除外)因子的数, 现在一个数字 ...
- ACM-ICPC 2018 南京赛区网络预赛 Sum
A square-free integer is an integer which is indivisible by any square number except 11. For example ...
- ACM-ICPC 2018 南京赛区网络预赛Sum,线性筛处理积性函数
SUM 题意:f(n)是n可以拆成多少组n=a*b,a和b都是不包含平方因子的方案数目,对于a!=b,n=a*b和n=b*a算两种方案,求∑i=1nf(i) 首先我们可以知道,n=1时f(1)=1, ...
- 2018 南京预选赛 J Sum ( 欧拉素数筛 、Square-free Number、DP )
题目链接 题意 : 定义不能被平方数整除的数为 Square-free Number 定义 F(i) = 有几对不同的 a 和 b 使得 i = a * b 且 a .b 都是 Square-free ...
- ACM-ICPC 2018 南京网络赛
题目顺序:A C E G I J L A. An Olympian Math Problem 打表,找规律,发现答案为n-1 C. GDY 题意: m张卡片,标号1-13: n个玩家,标号1-n:每个 ...
- 2018南京网络赛 - Skr 回文树
题意:求本质不同的回文串(大整数)的数字和 由回文树的性质可知贡献只在首次进入某个新节点时产生 那么只需由pos和len算出距离把左边右边删掉再算好base重复\(O(n)\)次即可 位移那段写的略微 ...
随机推荐
- Centos安装 k8s
### 一. 安装docker 1.安装依赖包```shellsudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` ...
- python学习——while True的用法
在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法: d = {} #数据库 ...
- python 手机App数据抓取实战二抖音用户的抓取
前言 什么?你问我国庆七天假期干了什么?说出来你可能不信,我爬取了cxk坤坤的抖音粉丝数据,我也不知道我为什么这么无聊. 本文主要记录如何使用appium自动化工具实现抖音App模拟滑动,然后分析数据 ...
- Java中将字符串用空格分割成字符串数组的split方法
官方文档链接:public String[] split(String regex) 本文以空格作为分割串. CaseOne import java.util.Scanner; public clas ...
- Geometers Anonymous Club CodeForces - 1195F (闵可夫斯基和)
大意: 给定$n$个凸多边形, $q$个询问, 求$[l,r]$内闵可夫斯基区间和的顶点数. 要用到一个结论, 闵可夫斯基和凸包上的点等于向量种类数. #include <iostream> ...
- JQuery攻略读书笔记---第2章 数组
2 数组2.8 创建对象数组循环数组2.9 数组排序 2 数组 2.8 创建对象数组 //数组化对象 var student =[ { "role":101, "na ...
- 关于ECharts甘特图的实现
对于使用ECharts图表的步骤,每种图表都是一致的,相信大家也都了解 此处只分享甘特图的option,代码如下: option: { title: { text: '项目实施进度表', left: ...
- vue+scss动态改变主题颜色
1.新建.scss后缀公用文件,放在assets或者其他地方都可以 /*需要切换的颜色变量*/ $color-primary1:#1776E1; /* 更换的颜色 */ $color-primary2 ...
- Ubuntu安装telnet
安装 # sudo apt-get install xinetd telnetd 配置 -> 加入以下选项 # sudo vi /etc/inetd.conf telnet stream tcp ...
- git的使用(win7 64位)
下载安装 1.官方下载网址:https://git-scm.com/downloads: 2.安装十分简单,按照默认配置,一直点击next,最后点击install,即安装成功: 3.安装成功之后,则自 ...