2018年2月2日训练笔记

      今天晚上牛客网的Wannafly挑战赛9打的很伤,题目是div.1的难度,只做出来一道A题,感觉C题应该也行的但是做不出来,可能思路差一点,然后三个专题今天就做的比较慢了,专辑1的水题差不多做完了,专题2,3还能再水一水,剩下的题目就稍难些了,做起来比想象的慢些。


专辑1

K - Pseudoprimenumbers

题意:费马定理指出:费马定理指出,对于任何素数p和任意整数a>1,有a^p = a(mod p),有些非素数p对于某些a也满足此性质,我们称之为base-aPseudoprimemge题目给出a和p判断p对于a是否满足性质,那么用快速幂判断pow_mod(a,p)==(a%p)即可,但这里要求p是非素数,如果p是素数那么虽然它一定满足公式,但不是要求的。

 

J - Prime Cuts

题意是给出n和c,让筛出所有[1,n]之间的素数形成素数表(注意此题把1也算入第一个素数),让输出素数表中间的那些素数,即如果筛出的素数的个数为偶数个那么输出在正中间的2*c个,即如果筛出的素数的个数为奇数个那么输出在正中间的2*c-1个。如果按要求要输出的个数(2*c或2*c-1)大于素数表中素数个数那么只要输出素数表中所有素数即可。可以先筛出所有素数,对于n和c找到输出上下边界,然后输出就ok。

 

I - Prime Path

这道题算是广度优先搜索BFS的经典题目,只是用到了判断素数。题目给出a,b两个4位的素数,让通过对a的每一位数字的替换,使得a变为b,即每一次替换只能换a的千位、百位、十位或个位中的一个,替换的中间过程中不能使a变为非素数,求最少几次能从a替换到b。创建一个结构体保存a的每一位,和替换次数,然后bfs遍历每一位可能情况。

 

Z - Astronomy

题意:已知n个行星和每一个行星的周期Ti,求所有行星共线的最短的周期。

分析:每一个行星的角速度为vi=(2π)/Ti,选择行星0为参考点(所有行星均以其为参考点),则相对于行星0的角速度为v′i=(2π)*(Ti−T0)/(Ti*To),

则i行星相对0行星转动半圈的时间为T′i=π/v′i=(Ti*T0)/(2*(Ti−T0))

问题就转化为求T′1,T′2,T′3⋯,T′n−1的最小公倍数

最小公倍数:对于整数的最小公倍数为LCM(a,b)=(a×b)/GCD(a,b),那么对于分数呢?

结论:LCM(a/b,c/d)=LCM(a,c)/GCD(b,d)

证明:假设m/n是a/b,c/d的最小公倍数,那么(m/n)×(b/a)=N,(m/n)×(d/c)=N′

显然m是a,c的倍数,n是b,d的约数,由于是最小公倍数,那么自然是m尽量的小,n尽量的大。

所以m=LCM(a,c),n=GCD(b,d)。

由于数据的结果比较的大,所以用高精度算法或者是Java。

 

专辑3

J - 完全平方数

考察莫比乌斯函数的性质

题意:小x讨厌完全平方数和完全平方数的倍数,让求第k个不讨厌的数

对于一个数若为完全平方数的倍数,则它的质因子肯定有一个的指数大于1,对应一个合适的数它的质因子的指数肯定全为1。

想到对于一个数n我们可以求小于等于n的质因数指数都为1的数的个数,这里想到容斥原理,我们可以用<=n的总数个数n,减掉所有为p^2的倍数的数(p为质数),加上所有同时为两个质数的平方(pi^2、pj^2)的倍数的个数,减去同时为3个…

想到莫比乌斯函数:对于i=p1^a1*p2^a2…pk^ak

               1    (i为奇数个不同质数的乘积,即a1=a2...=ak=1且k为奇数)

miu[i]=   -1   (i为偶数个不同质数的乘积,即a1=a2...=ak=1且k为偶数)

               0   (i有某个质数因子指数>1,即a1~ak中有aj>1)

那么小于x的不讨厌的数字个数是Σmu[i]*(x/(i*i)) (i<=(int) sqrt(n),显然如果i>sqrt(n)时x/(i*i)==0此时个数肯定为0)

 

R - 选课时间(题目已修改,注意读题)

典型的母函数,给出k门课,a学分的有b门,让求n个学分的组合数。可得母函数G=(1+x^a1+x^(2*a1)+…+x^(b1*a1))(1+x^a2+x^(2*a2)+…+x^(b2*a2))…(1+x^ak+x^(2*ak)+…+x^(bk*ak))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值