HDU 5514 Frogs 容斥

/*
   找规律 每个ai 对应 li= gcd(M,ai) k*li k>0 为 ai 走到的位置。 
   ai 能走到的位置 之和 等于一个等差数列,
   根据容斥 计算出所有答案 ,
   常规容斥 是 2(N) 的效率,
   ANS = a1 +a2+ a3 -a1a2 -a2a3-....+a1a2a3;
   每一项都是 m 的因子,那直接计算 每个因子对应的常数 
   a1 1 a2 1 a3 1 a1a2 -1 a2a3 -1...
   a1a2 = (1) - 1+1 
   a1a2a3 = (1) -1+1+1-1-1-1
   可以这样构造 
*/ 
#include
#include 
#include
#include
#include
using namespace std;
#define For(i,a) for(int i=0;i

你可能感兴趣的:(数学_容斥)