题目链接https://nanti.jisuanke.com/t/30999

参考自博客https://kuangbin.github.io/2018/09/01/2018-ACM-ICPC-Nanjing-online-J/

题目中文

  • 1000毫秒
  • 512000K

无方形整数是一个整数,除了1以外的任何平方数都不可分 这个数。例如,6 = 2 *3,6=2*3,6是无方形整数,但12 = 2 ^ 2*3,,因为2 ^ 2是正方形数。有些整数可以分解为两个无方形整数的乘积,可能有多种分解方式。例如,6=1·6=6·1=2·3=3·2,n=a*bn=b*a被认为是不同的。)是分解方式的数量n=a*b。问题在于计算

输入

第一行包含一个整数 ,表示的测试用例的数量。

对于每个测试用例,第一行有一个整数

产量

对于每个测试用例,打印答案

暗示

样例输入复制

2
5
8

样例输出复制

8
14

 解题思路:首先我们对f(n)分析,我们知道对于任意一个数,我们都可以把他拆分成若干素因子乘积的形式如f(n)=p^x+q^y+……r^z,如果f(n)的素因子分解式子中,某个素因子的指数大于二,则f(n)就一定为0;比如f(8)=f(2^3)=0;

如果f(n)非0,则f(n)的素因子的指数只能为1或者2了,如果该素因子的指数为1,则对结果的贡献度为2(即其余素因子分成两部分,可加入任意一边),如果该素因子的指数为1,则对结果的贡献度为1(其余素因子分成两部分,一边一个);

所有如果单独求一个f(n)的话,只需要对n进行素因素分解。

但是现在需要求1∼2×10^7的f(n), 我们需要进行递推。

假如我们知道n的最小素因子是p的话,而且p的指数是x的话,即n=y*p^x.

那么很显然,如果x == 1, 那么f(n)=2×f(y), 如果x == 2, 那么f(n)=f(y), 如果x > 2, 那么f(n)=0.

然后这里就这要用线性筛素数了,而筛素数的同时记录每个最小的素因子。

附上代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=2e7;
int prime[maxn+],minprime[maxn+];
ll cnt[maxn+];
//线性筛素数
void getprime()
{
memset(prime,,sizeof(prime));
int tot=;
for(int i=;i<=maxn;i++)
{
if(!prime[i])
{
prime[tot++]=i;
minprime[i]=i;
}
for(int j=;j<tot&&i*prime[j]<=maxn;j++)
{
prime[i*prime[j]]=;
minprime[i*prime[j]]=prime[j];
if(i%prime[j]==)
break;
}
}
} int main()
{
getprime();
cnt[]=;
for(int i=;i<=maxn;i++)
{
int x=minprime[i]; //最小素因子
if(i%(x*x*x)==) cnt[i]=; //最小素因子指数大于2
else if(i%(x*x)==) cnt[i]=cnt[i/(x*x)]; //最小素因子指数等于2
else cnt[i]=*cnt[i/x]; //最小素因子指数为1
}
for (int i=;i<=maxn;i++)
cnt[i]+=cnt[i-];
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
printf("%lld\n",cnt[n]);
}
return ;
}

ACM-ICPC 2018 南京赛区网络预赛 J题Sum(线性筛素数)的更多相关文章

  1. 【ACM-ICPC 2018 南京赛区网络预赛 J】Sum

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 线性筛求出每个数的最小质因子x for 从1-n 对于i,它的最小质因子为x 考虑i=ab 如果i能被x^3整除 那么这x怎么分配给 ...

  2. ACM-ICPC 2018 南京赛区网络预赛 J.sum

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

  3. ACM-ICPC 2018 南京赛区网络预赛 E题

    ACM-ICPC 2018 南京赛区网络预赛 E题 题目链接: https://nanti.jisuanke.com/t/30994 Dlsj is competing in a contest wi ...

  4. 计蒜客 30999.Sum-筛无平方因数的数 (ACM-ICPC 2018 南京赛区网络预赛 J)

    J. Sum 26.87% 1000ms 512000K   A square-free integer is an integer which is indivisible by any squar ...

  5. ACM-ICPC 2018 焦作赛区网络预赛J题 Participate in E-sports

    Jessie and Justin want to participate in e-sports. E-sports contain many games, but they don't know ...

  6. 线性素数筛 ACM-ICPC 2018 南京赛区网络预赛 J Sum

    https://www.jisuanke.com/contest/1555?view=challenges 题意: 题解:写完都没发现是个积性函数233 想法就是对x分解质因数,f(x)就是2^k,其 ...

  7. ACM-ICPC 2018 南京赛区网络预赛 J Sum (思维+打表)

    https://nanti.jisuanke.com/t/30999 题意 f(i)表示i能拆分成两个数的乘积,且要求这两个数中各自都没有出现超过1次的质因子的方案数.每次给出n,求∑(n,i=1)f ...

  8. ACM-ICPC 2018 南京赛区网络预赛 J.sum(欧拉筛)

    题目来源:https://nanti.jisuanke.com/t/A1956 题意:找一个数拆成无平方因子的组合数,然后求前缀和. 解题思路:我们可以把某个数分解质因数,如果某个数可以分解出三个相同 ...

  9. ACM-ICPC 2018 南京赛区网络预赛 - J. Sum (找规律+打表)

    题意:\(f(i):i\)能拆分成两个数的乘积,且要求这两个数中各自都没有出现超过1次的质因子.每次给出n,求\(\sum_{i=1}^{n}f(i)\) 分析:\(1 \le n \le 2e7\) ...

随机推荐

  1. MySQL Limit优化(转)

    原文:http://bbs.landingbj.com/t-0-240894-1.html 首先,我们看一个分页SQL: SELECT time,pageFROM `l_not_200_page`WH ...

  2. 阿里巴巴 Java开发手册1.4.0

    <阿里巴巴Java开发手册1.4.0>下载地址: 下载地址:https://102.alibaba.com/downloadFile.do?file=1528269849853/Java_ ...

  3. MySQL客户端工具及SQL

    一.客户端命令介绍 mysql  mysqladmin mysqldump mysql 1.用于数据库的连接管理 2. mysqladmin 1. 2. mysqldump 1. 2.

  4. python爬虫之Gerapy安装部署

    原创北航大才:https://cuiqingcai.com/5006.html NULL:http://www.infosec-wiki.com/?p=432737

  5. python爬虫之MongoDB测试环境安装

    一.   下载 从http://www.mongodb.org/downloads地址中下载:mongodb-linux-x86_64-2.4.11.tar 二.  安装 1>设置mongoDB ...

  6. Unable to handle kernel paging request at virtual address

    1.Unable to handle kernel paging request at virtual address 00000000 =====>越出内核地址空间范围,原因是由于使用空NUL ...

  7. centso7 安装redmine

    一.安装rvm ###安装rvm gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D3 ...

  8. Antd & ice

    Antd & ice Angular https://github.com/NG-ZORRO/ng-zorro-antd https://ng.ant.design/docs/introduc ...

  9. python数据结构与算法第十二天【快速排序】

    1. 原理如图所示: 2.代码实现 def quick_sort(alist, start, end): """快速排序""" # 递归的退 ...

  10. eclipse 等号左边代码补全

    1: 2. 3.完成  “ctrl + shift + l” 代码补全成功