今天是水题的一天,因为刚开3个专题,当然先做水题啊。。。还想多抢几个1A,可是自己太菜,没大抢到,下午被专题2的高斯消元耽误了许久,代码怎么敲都不对,最后发现是细节错误,高斯消元的代码是真的长,看的眼花。贴一些题目的简单思路:
专题一
给出p求其原根个数,原根:奇素数p必有原根它的原根个数为φ(φ(p))
H -Prime Gap
题意是给定一个数k,让找出大于k的第一个素数与小于k的第一个素数,结果为两者之间的差值,对于k本身就是素数输出0;可以二分找离k最近的素数。
W -Farey Sequence
整数n的Farey序列Fn是指满足0 <a <b <= n且gcd(a,b)= 1按照递增顺序排列的不可约分的有理数a / b的集合。
那么对于F(n)它比F(n-1)新增加的元素就是以n为底,且分子与n互质的分数的集合,新增加的个数就是phi(n)个。
M -Perfect Pth Powers
题意:类似于完全平方数(即完全2次方数),求一个数最多是完全多少次方数,即让求使x=b^p的最大的p;
首先把x分解质因数,x = a1^b1* a2^b2 … ak^bk,则最终结果p为b1,b2,…bk的最大公约数。
如果x是负数,因为一个数的偶数次方不可能为负数,所以要将答案一直除2,直到其为奇数。
本来想先枚举次数i求一个int ans=pow(1.0*n,1.0/i)然后判断n与pow(1.0*ans,1.0*i))是否相等但是wrong answer,是机器精度运算问题???
V -Happy 2006
题目大意就是给出n和k求出第k个与n互素的数
由欧几里德算法知道gcd(b×t+a,b)=gcd(a,b) (t为任意整数)
即:如果a与b互素,则b×t+a与b也一定互素,如果a与b不互素,则b×t+a与b也一定不互素
故与m互素的数对m取模具有周期性,则根据这个方法我们就可以很快的求出第k个与m互素的数
假设小于m的数且与m互素的数有k个,其中第i个是ai,则第m×k+i与m互素的数是k×m+ai
综上:与n互素的数以n为周期,[1,n]内与n互素的数构成一个周期可以先求出来,假设这些数分别为p1,p2…pk,那么[n+1,2n]内与n互素的数就是n+p1,n+p2..n+pk.
G -Sum of Consecutive Prime Numbers
题意是:一个数可以等于一串连续素数的和,也就是一种方案,给出p(2<=p<=10000)问p可以由多少不同方案组成,题目其实考察筛素数,筛出素数后,预处理1000以内的连续素数组合情况。
N -Goldbach's Conjecture
题意是:由哥德巴赫猜想每个大于4的偶数都可以写成两个奇素数的和。给出n(6<=n<=1000000)求n可以由哪两个奇质数组成,如果有多种组成情况输出两个奇质数差最大的一种组.可以筛出1000000之内的所有奇质数,然后枚举即可,枚举到的第一种情况就是答案(直接break),题目当然不用判断不存在结果的情况,因为哥德巴赫猜想现在为止还没发现反例。
O -Goldbach's Conjecture
题意与N题相似,不过这里是求,对于一个n=p1+p2,求p1和p2的对数,注意(p1,p2)与(p2,p1)算一对,解法也是对于n枚举即质数,统计方案数。
专题二
H -EXTENDED LIGHTS OUT
经典开关灯问题,给出灯的初始矩阵,求操作哪个灯,使得最终灯全为灭,操作一个灯时其周围灯全灭,输出操作矩阵,今天这一题错了多次,细节问题。
I -Painter's Problem
给出一个n*n的矩阵,由白块或黄块组成,白块反转的黄块,黄块翻转的白块,操作一块周围受影响,问操作哪些块能使得最终全为黄块,求最少操作几块。经典异方程组,由于可能存在自由元所以与上题不同,此题需要枚举自由元来找最少操作数,也就是方程组有多个解,找最合适的。
M -Flip Game
给出一个4*4的矩阵,由白块或黑块组成,白块反转的黑块,黑块翻转的白块,操作一块周围受影响,问操作哪些块能使得最终全为白块或全为黑块,求最少操作数几块。
那么这个问题,与I题不同的区别在于,最终状态可以有两种结果,那么可以对两种结果做两次高斯消元,在两次结果中取最小的。这个题的小变形还是不错的。