标签:快速幂 题目 部分 表示 前缀和 相同 利用 练习 一个
51nod1217
N个不同的数a[1],a[2]...a[n],你可以从中去掉K个数,并且找到一个正整数M,使得剩下的N - K个数,Mod M的结果各不相同,求M的最小值。(n <= 5000, k <= 4, a[i] <= 1e6)
预处理出任意两个数的差,用cnt[u]记录有多少对的差为u,则模m下同余的对数 = cnt[0] + cnt[m] + cnt[2 * m] + cnt[3 * m] + ...
从小到大枚举m,当模m下同余的对数 > k * (k + 1) / 2时显然无解,否则把这些同余的数字挑出来,看要去掉几个数字,和k比较,看m是否合适
51nod1742
一个含有平方因子的数被称为有趣的数,令f[x] = (n的约数中有趣的数的个数),给区间[a,b],求∑f(i)(i取遍[a, b]中的数字)(a, b <= 1e9)
想到莫比乌斯函数为0表示这个数有平方因子,故 1 - |mu[x]|为1表示这个数是有趣的数,大概化一化公式,即要求莫比乌斯函数绝对值的前缀和。
当n <= 1e7时,可以线性筛预处理,否则可以容斥原理求出1~n中有趣的数的个数,其中只需要利用莫比乌斯函数作系数就行了。
51nod1537
问 (1 + √2) ^ n 是否能写成 √m + √(m - 1)的形式,n <= 1e18, m对1e9 + 7取模。
注意到(1 + √2) ^ n可以看成是二阶递推数列的一部分,且n的数据范围很大,以及要取模,多半会是矩阵快速幂
a[n] = (1 + √2) ^ n + (1 - √2) ^ n,则 a[n] = 2 * a[n - 1] + a[n - 2]。
向题目靠拢,令 (1 + √2) ^ n = x + y√2,则 (1 - √2) ^ n = x - y√2
则 a[n] = 2 * x,将上面的二式相乘,x * x - 2 * y * y = (-1) ^ n,则可以求出y,再判断一下就行了。
标签:快速幂 题目 部分 表示 前缀和 相同 利用 练习 一个
原文地址:http://www.cnblogs.com/tempestT/p/7684503.html