zhx的趣味题
Problem 1
把 \(1,2,3,4,...,n\) 这些数的和分成若干组,每一组都是质数,最少分几组。 \(2 \le n \le 10^3\)
题目传送:CF45G
答案有三种情况: \(1, 2, 3\)
当 \(n == 2\) 时,输出 \(1\);
当 \(sum % 2 == 0\) ,输出 \(2\);
当 \(sum % 2 == 1\) ,如果 \(sum - 2\) 是质数,输出 \(2\) ,否则输出 \(3\)。
与哥德巴赫猜想有关
Problem 2
给一个长度为 \(n\) 的序列 \(a_1, a_2, a_3,...,a_n\), \(m\) 次询问,每次给两个数 \(l\) 和 \(r\) ,求序列 \([l,r]\) 中 能否选出三个数组成一个三角形。\(n, m \le 10^6, a_i \le 2^{31} - 1\)。
与斐波那契数列有关
斐波那契数列是满足数列中没有三个数能组成一个三角形的最小的数列
而 \(a_i\) 只在 int 范围内,这样的范围内斐波那契数列只有 \(46\) 位。
所以只要数列长度大于 \(46\) 就一定成立。如果序列长度小于 \(46\) 暴力即可。
Problem 3
给你一个模数 \(p\) , \(n\) 次询问 \(a,b\),数列 \(H\) 满足 \(H_0 = a, H_1 = b, H_i = (H_{i - 1} + H_{i - 2}) \mod p\),找到一个最小的 \(i\),使得 \(H_i = 0\)
小Trick : 斐波那切数列中 \(F_i\) 在模 \(p\) 意义下的循环节长度 \(\le 6p\)
手动模拟后可以发现 \(H_i = F_{i-1} \times a + F_{i-2} \times b\)
根据上面那个 trick ,预处理出前 \(6p\) 个数。排序后对于每次询问二分即可。
(WC 2021 T3 的弱化版