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,

  然后我们继续分析,当n为素数p时,只能拆成n=1*p和n=p*1这两种,所以f(p)=2,

  而当n=两个质数的乘积时,对于n=左*右,p1跟p2可以任意分配在左和右,它们的方案是类乘的,所以f(p1*p2)=f(p1)*f(p2)

  这里可以看出f(n)是个积性函数,那说明我们可以把它通过线性筛筛出来。

  那我们就要考虑n=pk的时候,当k>2时,对于n=左*右,不管哪个方案,左或者右那边必定有一边是存在因子包含p2的,所以此时f(pk)=0,k>2

  k=1时便是n=p,而k==2时呢,p只能分别在左右两边各一个,f(p2)=1

  最后推广n=p1k1*p2k2的时候,k1,k2肯定都不能>2,然后就是(0,0),(0,1),(0,2),(1,0),(1,1,)(1,2),(2,0)(2,1)(2,2)这九种,推导一下就是f(p1k1*p2k2)=f(p1k1)*f(p2k2)

  具体编程实现上的话,因为欧拉筛对于每个数来说,是通过它的最小质因子来筛掉它,那么我们可以记录每个数的最小质因子的指数exp,详情见注释

 #include<cstdio>
typedef long long ll;
const int N=;
bool nop[N]={false};
int pn,pri[N/],exp[N],f[N];
void init()
{
f[]=;
for(int i=;i<N;i++)
{
if(!nop[i])
{
f[i]=;
exp[i]=;
pri[pn++]=i;
}
for(int j=;j<pn&&1ll*i*pri[j]<N;j++)
{
int pp=i*pri[j];
nop[pp]=true;
//欧拉筛中,pri[j]是pp的最小质因子
if(i%pri[j]==)
{
//i的质因子有pri[j],pp的最小质因子的指数就是exp[i]+1
exp[pp]=exp[i]+;
if(exp[pp]>)
f[pp]=;
else
f[pp]=f[i/pri[j]];
//在i的方案上,再加入一个pri[j],不能跟i中原来有的
//pri[j]在同一边,而在对立边时,i中原来有的pri[j]
//在左,在右都一样,对方案没有了影响,所以
//f[i*pri[j]]=f[i/pri[j]];
break;
}
//i的质因子没有pri[j],那么pp中只有一个pri[j]
exp[pp]=;
f[pp]=f[i]*f[pri[j]];
}
}
for(int i=;i<N;i++)
f[i]+=f[i-];
}
int main()
{
init();
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",f[n]);
}
return ;
}

线性啊欧拉啊

  对于f[pp]=f[i/pri[j]]处,我说得不是很清楚,也不知道怎么表达那个意思,可以自行模拟体会一下。

ACM-ICPC 2018 南京赛区网络预赛Sum,线性筛处理积性函数的更多相关文章

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

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

  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. 计蒜客 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 ...

  4. 计蒜客 30996.Lpl and Energy-saving Lamps-线段树(区间满足条件最靠左的值) (ACM-ICPC 2018 南京赛区网络预赛 G)

    G. Lpl and Energy-saving Lamps 42.07% 1000ms 65536K   During tea-drinking, princess, amongst other t ...

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

    轻轻松松也能拿到区域赛名额,CCPC真的好难 An Olympian Math Problem 问答 只看题面 54.76% 1000ms 65536K   Alice, a student of g ...

  6. ACM-ICPC 2018 南京赛区网络预赛(12/12)

    ACM-ICPC 2018 南京赛区网络预赛 A. An Olympian Math Problem 计算\(\sum_{i=1}^{n-1}i\cdot i!(MOD\ n)\) \(\sum_{i ...

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

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

  8. ACM-ICPC 2018 南京赛区网络预赛B

    题目链接:https://nanti.jisuanke.com/t/30991 Feeling hungry, a cute hamster decides to order some take-aw ...

  9. 计蒜客 30990.An Olympian Math Problem-数学公式题 (ACM-ICPC 2018 南京赛区网络预赛 A)

    A. An Olympian Math Problem 54.28% 1000ms 65536K   Alice, a student of grade 66, is thinking about a ...

随机推荐

  1. 关于@service、@controller和@transactional 在spring中的位置说明

    Spring容器优先加载由ServletContextListener(对应applicationContext.xml)产生的父容器,而SpringMVC(对应mvc_dispatcher_serv ...

  2. spring配置文件和spring mvc配置文件的区别

    Question: Are applicationContext.xml and spring-servlet.xml related anyhow in Spring Framework? Will ...

  3. MySQL SELECT语法(二)SELECT...INTO语法

    源自MySQL 5.7 官方手册 SELECT...INTO Syntax 一.SELECT...INTO介绍 SELECT...INTO用来将查询结果存储在变量或者写入文件中. SELECT ... ...

  4. 12-MySQL DBA笔记-MySQL复制

    第12章 MySQL复制 本章将为读者讲述MySQL的复制技术,首先,介绍最基础的主从复制,它是其他所有复制技术的基础,接着再为读者讲述各种复制架构的搭建,最后,列举了一些常见的复制问题及处理方式.复 ...

  5. MQTT协议探究(三)

    1 回顾与本次目标 1.1 回顾 主题通配符 主题语义和用法 WireShark进行抓包分析了报文 报文分析: SUBSCRIBE--订阅主题 SUBACK--订阅确认 UNNSUBSCRIBE--取 ...

  6. ECMAScript中的原型继承

    //ECMAScript中的原型继承//ECMAScript中的继承主要是依靠原型链实现的.(关于原型链的介绍,详见<高三>6.3.1章节 P162) //本文示例主要为了说明SubTyp ...

  7. 【转】CSS之Background-Position left right center top bottom属性

    background-position:left top; 背景图片的左上角和容器(container)的左上角对齐,超出的部分隐藏. 等同于 background-position:0,0; 也等同 ...

  8. PHP中pdo的使用

    <?php /** *下面代码中information为表名 * */ //1.先要连数据库 $pdo=new PDO('mysql:host=localhost;dbname=数据库名','用 ...

  9. RabbitMQ 功能

    学习完了rabbitmq总一下 RabbitMQ依赖的语言 erlang 第一它可以实现不同程序之间的程序信息储存交互,在易用性.扩展性.高可用性的方面不俗. rabbitmq相当于一个中间人,我们同 ...

  10. linux基础1_文件类型、拓展名、目录配置

    命令ls -l,显示的第一个属性代表了这个档案的档案类型 [d]:目录 [-]:普通文件 [l]:连接文件 [b]:存储数据以供系统访问的接口设备 [c]:串行接口的端口设备,例如键盘.鼠标 [s]: ...