题意

链接

定义 $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)$ 是积性函数,考虑线性筛。

  1. 当 $x$为素数时, $f(x)=2$,即 $(1,x)$ 和 $(x,1)$;
  2. 当 $x$ 的最小质因子为 $p$,且 $p \nmid \frac{x}{p}$ 时,$f(x) = f(p)f(\frac{x}{p}) = 2f(\frac{x}{p})$;
  3. 当 $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 - 线性筛的更多相关文章

  1. 2018 南京网络预赛Sum ——莫比乌斯反演

    题意 设 $f(n)$ 为 $n=ab$ 的方案数,其中 $a,b$ 为无平方因子数.求 $\displaystyle  \sum_{i=1}^nf(i)$,$n \leq 2e7$. 分析 显然,可 ...

  2. 2018 南京网络预赛Sum - 离线分段打表

    题意 设 $f(n)$ 为 $n=ab$ 的方案数,其中 $a,b$ 为无平方因子数. 例如,$f(6)=4$,因为 $6 = 1 \times 6 = 2 \times 3 = 3 \times 2 ...

  3. ACM-ICPC 2018 南京赛区网络预赛 J题Sum(线性筛素数)

    题目链接:https://nanti.jisuanke.com/t/30999 参考自博客:https://kuangbin.github.io/2018/09/01/2018-ACM-ICPC-Na ...

  4. 计蒜客 30999 - Sum - [找规律+线性筛][2018ICPC南京网络预赛J题]

    题目链接:https://nanti.jisuanke.com/t/30999 样例输入258 样例输出814 题意: squarefree数是指不含有完全平方数( 1 除外)因子的数, 现在一个数字 ...

  5. ACM-ICPC 2018 南京赛区网络预赛 Sum

    A square-free integer is an integer which is indivisible by any square number except 11. For example ...

  6. 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, ...

  7. 2018 南京预选赛 J Sum ( 欧拉素数筛 、Square-free Number、DP )

    题目链接 题意 : 定义不能被平方数整除的数为 Square-free Number 定义 F(i) = 有几对不同的 a 和 b 使得 i = a * b 且 a .b 都是 Square-free ...

  8. 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:每个 ...

  9. 2018南京网络赛 - Skr 回文树

    题意:求本质不同的回文串(大整数)的数字和 由回文树的性质可知贡献只在首次进入某个新节点时产生 那么只需由pos和len算出距离把左边右边删掉再算好base重复\(O(n)\)次即可 位移那段写的略微 ...

随机推荐

  1. 【坑】mysql 8.0以后的驱动 jar、连接池的变化

    文章目录 前言 com.mysql.cj.jdbc.Driver 后记 前言 博主公司刚配置了新电脑,安装开发环境的时候,美滋滋的将开发工具都装了新版本,结果在使用 mysql 的时候,发现一直链接数 ...

  2. Linux (x86) Exploit 开发系列教程之一(典型的基于堆栈的缓冲区溢出)

    (1)漏洞代码 //vuln.c #include <stdio.h> #include <string.h> int main(int argc, char* argv[]) ...

  3. sublime text 2 + Dev-C++/MinGW 组合配置更方便快捷的 C/C++ 编译环境

    首先看一下配置后的效果: 1.直接在底部文本框中显示运行结果(不需要从键盘输入的时候使用): 2.在cmd中运行结果(需要从键盘输入的时候使用): 快捷键说明: 运行: 在底部文本栏显示结果:Ctrl ...

  4. C#获取ip

    string name = Dns.GetHostName(); string ip = Dns.GetHostAddresses(name).First().ToString();

  5. 关于mysql 自增长 主键

    我遇到过 我这样建表 ![](http://images2017.cnblogs.com/blog/1128666/201709/1128666-20170917222547078-151122413 ...

  6. py datetime

    python datetime模块strptime/strptime format常见格式命令- [python]2011-12-23   版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本 ...

  7. javascript经常用到的函数

    trim函数:                         trim() lTrim() rTrim()校验字符串是否为空:                 checkIsNotEmpty(str ...

  8. SQLiteDatabase执行update、insert操作的时候,conflictAlgorithm参数的含义区别

    /** * When a constraint violation occurs, an immediate ROLLBACK occurs, * thus ending the current tr ...

  9. bootstrap 分页行数选择按钮失效

    原因是bootstrap.js重复加载,button点击作用两次,导致没效果

  10. 一线互联网常见的Java面试题,你颤抖了吗程序员

    跳槽不算频繁,但参加过不少面试(电话面试.face to face面试),面过大/小公司.互联网/传统软件公司,面糊过(眼高手低,缺乏实战经验,挂掉),也面过人,所幸未因失败而气馁,在此过程中不断查缺 ...