coprime专题

B. Marin and Anti-coprime Permutation

B. Marin and Anti-coprime Permutation 题意: 构造一个排列满足 题解 考虑n等于2的时候 gcd(1p1,2p2) 容易想到最小的最大公约数为2,而且也只有可能为2.只要考虑二者的奇偶性与长度,当奇数与偶数个数不同时无解,否则将奇偶交错即可构造出一个合法方案。用乘法原理计数即可。 1-n:奇 偶 奇 偶 P:偶 奇 偶 奇 #include<i

Educational Codeforces Round 20 F. Coprime Subsequences(容斥)

原题链接:http://codeforces.com/contest/803/problem/F 题解: f[i]表示最大公约数为i的子序列的个数,我们可以求出所有公约数为i的倍数的子序列的个数,然后从后向前扫,对于每一个i,减去公约数为ki的(k>=2)的子序列的个数,最后可以得到答案。注意处理空集的情况。 #include<bits/stdc++.h>using nam

HDU - 6025 Coprime Sequence 典型前缀后缀

题意:给你一个序列,任意去掉一个,问整个序列的最大公约数。 前缀和,后缀和思想 求前缀最大公约数,后缀最大公约数,然后找gcd(前缀gcd,后缀gcd)中最大的。 具体思想:开两个数组,第一个数组a保存前缀gcd,a[i]表示,从1到i的最大公约数。第二个数组b保存后缀gcd,b[i]表示,从n到i的最大公约数。 去掉第i个数的最大公约数为gcd(a[i-1],b[i+1]).over!