题意: 给你 N 个数 和 一个 M;

    对于 每一个 Ni , 乘以 K 取摸 M 都有一个 集合, 把所有集合合并, 求和

Σ ai ( ai → K * Ni % M )

思路 :   最开始 直接求一边gcd , 然后容斥。。。。 结果状态有 2 ^  (1e4)....

      反着求 M 的约数, 然后记录要用到的约数, 对于这些进行容斥就好了(不能状压)

      

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1e5 + 131;
LL gcd(LL a, LL b){
return b == 0 ? a : gcd(b, a % b);
} LL P[maxn], cnt;
void GetP(LL m){
cnt = 0;
for(LL i = 1; i <= sqrt(m); ++i)
{
if(m % i == 0)
{
P[cnt++] = i;
if(i * i != m) P[cnt++] = m / i;
}
}
sort(P,P+cnt);
} LL Vis[maxn], Num[maxn]; int main()
{
int T;
scanf("%d", &T);
for(int kase = 1; kase <= T; ++kase)
{
LL n, m;
scanf("%lld %lld", &n, &m);
GetP(m);
LL u;
memset(Vis,0, sizeof(Vis));
memset(Num,0, sizeof(Num));
for(int i = 0; i < n; ++i)
{
scanf("%lld", &u);
LL tmp = gcd(u, m);
for(LL j = 0; j < cnt; ++j)
{
if(P[j] % tmp == 0)
Vis[j] = 1;
}
}
//cout << P[cnt - 1 ] << endl;
Vis[cnt -1] = 0;
LL Ans = 0;
for(LL i = 0; i < cnt; ++i) // 容斥
{
if(Vis[i] != Num[i])
{
LL tmp = m / P[i], D = Vis[i] - Num[i];
Ans += (tmp + 1) * tmp / 2 * P[i] * D;
for(LL j = i; j < cnt; ++j)
{
if(P[j] % P[i] == 0)
Num[j] += D;
}
}
} printf("Case #%d: %lld\n", kase, Ans);
}
}

HDU 5514的更多相关文章

  1. hdu 5514 Frogs(容斥)

    Frogs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  2. HDU 5514.Frogs-欧拉函数 or 容斥原理

    Frogs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  3. HDU 5514 Frogs 容斥定理

    Frogs Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5514 De ...

  4. HDU 5514 Frogs (容斥原理)

    题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5514 题意 : 有m个石子围成一圈, 有n只青蛙从跳石子, 都从0号石子开始, 每只能越过a[i] ...

  5. HDU 5514 Frogs(容斥原理)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5514 [题目大意] m个石子围成一圈,标号为0~m-1,现在有n只青蛙,每只每次跳a[i]个石子, ...

  6. HDU 5514 Frogs

    Frogs Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 5514 ...

  7. ACM-ICPC 2015 沈阳赛区现场赛 F. Frogs && HDU 5514(容斥)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5514 题意:有m个石子围成一圈, 有n只青蛙从跳石子, 都从0号石子开始, 每只能越过xi个石子.问所 ...

  8. HDU 5514 Frogs 欧拉函数

    题意: 有\(m(1 \leq m \leq 10^9)\)个石子排成一圈,编号分别为\(0,1,2 \cdots m-1\). 现在在\(0\)号石头上有\(n(1 \leq n \leq 10^4 ...

  9. HDU 5514 Frogs (容斥原理+因子分解)

    题目链接 题意:有n只青蛙,m个石头(围成圆圈).第i只青蛙每次只能条ai个石头,问最后所有青蛙跳过的石头的下标总和是多少? 题解:暴力肯定会超时,首先分解出m的因子,自己本身不用分,因为石头编号是0 ...

  10. 很好的容斥思想 HDU 5514

    题目描述:有n只青蛙,m个石头(围成圆圈).第i只青蛙每次只能条a[i]个石头,问最后所有青蛙跳过的石头的下标总和是多少? 思路:经过绘图我们发现,每次跳过的位置一定是k*gcd(a[i], m).然 ...

随机推荐

  1. row_number()over()使用

    语法: ROW_NUMBER ( ) OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause ) 通过语法可以看出 o ...

  2. windows配置Java环境变量

    打开电脑的高级系统设置-高级-环境变量 新建系统变量,如果已存在则添加到变量尾部,切勿覆盖 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1..0_102 变量 ...

  3. js模板引擎-art-template常用总结

    art-template javascript 模板引擎,官网:https://github.com/aui/art-template 分为原生语法和简洁语法,本文主要是讲简洁语法 基础数据渲染 输出 ...

  4. StarUML最新版2.8.1简单使用及代码生成

    StarUML(简称SU)是一款开放源码的UML开发工具,由韩国公司主导开发出来的,可以直接到StarUML网站下载. 在这里直接超链接:http://staruml.io/download SU是一 ...

  5. GCC编译器原理(二)------编译原理一:ELF文件(3)

    4.5 String Table:字符串表 字符串表节区包含以 NULL( ASCII 码 0) 结尾的字符序列, 通常称为字符串. ELF 目标文件通常使用字符串来表示符号和节区名称. 对字符串的引 ...

  6. 代码管理工具:使用github和git工具管理自己的代码

    一.git工具和账户创建 1.1 安装 Git 是 Linus Torvalds 最近实现的源代码管理软件."Git 是一个快速.可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系 ...

  7. Filter Authentication 登录认证

    [编程式配置]可用webxml配置替换@WebListenerpublic class FilterListenerConfigurator implements ServletContextList ...

  8. Web获取客户端物理MAC地址(ocx插件)ActiveX控件

    主要是通过ActiveX控件 从本地获取到MAC地址,传入到浏览器打开的网页中,再提交到服务器. 具体详解与步骤看文档中: 文件实例包下载 DotNetFX 文件夹附件文件:(可能安装时需用) dot ...

  9. Spark思维导图之性能优化

  10. Flume配置Load balancing Sink Processor

    1 官网内容 2 找一个图来理解一目了然 3 详细配置 配置文件load_source_case.conf 配置数据入口 source到channel 配置了两个sink用来做负载均衡 #配置文件: ...