函数

来源:互联网 发布:义乌淘宝美工培训学校 编辑:程序博客网 时间:2024/06/05 14:27

函数(function)
【题目描述】
构造一个完全积性函数f(即f(xy)=f(x)f(y)),满足|f(i)|=1,并最小化max_(1≤k≤n) |sigma(f(i))(i=1~k) |。
【输入数据】
一行一个整数n。
【输出数据】
一行n个整数表示f(1)~f(n)。
【数据范围】
本题只有1个测试点,n=10^6。
【评分方式】
记你的答案为out,std的答案为ans,则你的得分为⌊100√(ans/out)⌋
嗯,真心不想放此题,但是此题让我了解到了积性函数,所以,哎,,
**先复习一下积性函数:在数论中的积性函数:对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时f(ab)=f(a)f(b),在数论上就称它为积性函数。
有几个典例:欧拉函数phi(n),小于等于n的正整数中与n互质的数的个数;
莫比乌斯函数:μ(n),关于非平方数的质因子数目;
若对于某积性函数 f(n) ,就算a, b不互质,也有f(ab)=f(a)f(b),则称它为完全积性的。
就是要你构造一个完全积性函数,f(i)要么1,要么-1,使最大前缀和最小。
没什么算法,就暴力+随机,我在考场试了近三小时,只试出了89,有人还试出了41(这是当场最小的,是把前面小的那些质数,1,-1,1,-1,,,加下去,然后到了这个函数前缀和函数的最值,取了个循环节吧,后面随机这个循环节构造数的方案是从1,还是-1开始,于是找到了41),
附上老师题解。
由于f是积性函数,因此f(1)=1,并且只需要确定所有质数的函数值。
——》》**对于质数x,若x mod 3 = 1,取f(x)=1,否则取f(x)=-1。
设s(x)表示f的前缀和,那么s(x)=-s(x/3)+0或1
因此|s(x)|<= ⌈log3n/2⌉

就不看代码了吧,因为写的太丑,数据差不多这样:
1 2 3 4 5 6 7 8 9 10 11 12
1 -1 -1 1 -1 1 1 -1 1 1 -1 -1

其实老师的标解也不是正确的,有人暴搜出了6和5,佩服,不过我想吐槽老师的算分方法,41的约44,连50都不到!!,89的却28,这不科学,41的思维度那么高!!
这道题有没有什么很有理有据的唯一解呢?期待想法,,,

原创粉丝点击