hdu5514】的更多相关文章

The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b),is the largest divisor common to a and b,For example,(1,2)=1,(12,18)=6.  (a,b) can be easily found by the Euclidean algorithm. Now Carp is considering a lit…
hdu5514 题意 \(m\) 个石子绕成一圈,编号\([0, m - 1]\).有 \(n\) 个青蛙从 \(0\) 号石子出发,给出每个青蛙的步长,青蛙无限跑圈.问哪些石子至少被一个青蛙经过,求这些石子的编号之和. 分析 假设某个青蛙的步长 \(x\),则一共会经过 $ \frac{m - 1}{x} + 1$ 个石子(包括 \(0\) ).可以用等差数列求和公式计算贡献. 然后找出 \(m\) 的所有因子并考虑哪些因子可能要计算贡献. 例如步长为 \(2\) 和 \(3\) 的计算后,步…
/* HDU5514 Frogs http://acm.hdu.edu.cn/showproblem.php?pid=5514 容斥原理 * * */ #include <cstdio> #include <cmath> #include <algorithm> //#define test using namespace std; const long long Nmax=1e5; long long n,m,a[Nmax]; long long book[Nmax]…
/* 1 126 223092870 210 330 390 462 510 546 570 690 714 770 798 858 910 966 1122 1155 1190 1254 1326 1330 1365 1430 1482 1518 1610 1785 1794 1870 1938 1995 2002 2090 2145 2210 2346 2415 2470 2530 2618 2622 2805 2926 2990 3003 3094 3135 3230 3315 3458…
题意是给出n个m的约数,问[0,m-1]中至少被其中一个约数整除的整数和.(n<=10000,m<=1000000000) 直接容斥的话,是2^n再拖个log的复杂度,加上当前的数大于m时直接跳出了剪枝,或许会小一点. 但是有一个很重要的性质:我们容斥中所有计算过贡献的数,都是m的因数.换言之,我们计算贡献的数的个数是及其有限的,故可以计算出所有因数贡献的系数. 我们给所有因数赋予互不重叠的“贡献”,定义为所有能被其整除但不能被其他大于它的因数整除的数的和.这种贡献是我们用来表示答案的组成的,…
题目 链接 有n只青蛙,有m块石头,编号为0-m-1,第i只青蛙每次可以跳$a_i$, 刚开始都在0,问,青蛙总共可以跳到的石头之和为多少.其中$t≤20$,$1≤n≤10^4$,$1≤m≤10^9$,$1≤a_i≤10^9$. 分析 根据裴蜀定理知,对于一个有n个点的环,每个循环节的长度为n/gcd(n, k),k为每次走的步数.所以青蛙可以达到的石头编号肯定是$gcd(m,a_i)$的倍数,相当于真正步长为$gcd(m,a_i)$. 当然要容斥一下,不就是奇加偶减吗,枚举所有的项有$2^n$…