HDU 5514
题意: 给你 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的更多相关文章
- hdu 5514 Frogs(容斥)
Frogs Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- HDU 5514.Frogs-欧拉函数 or 容斥原理
Frogs Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- HDU 5514 Frogs 容斥定理
Frogs Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5514 De ...
- HDU 5514 Frogs (容斥原理)
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5514 题意 : 有m个石子围成一圈, 有n只青蛙从跳石子, 都从0号石子开始, 每只能越过a[i] ...
- HDU 5514 Frogs(容斥原理)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5514 [题目大意] m个石子围成一圈,标号为0~m-1,现在有n只青蛙,每只每次跳a[i]个石子, ...
- HDU 5514 Frogs
Frogs Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 5514 ...
- ACM-ICPC 2015 沈阳赛区现场赛 F. Frogs && HDU 5514(容斥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5514 题意:有m个石子围成一圈, 有n只青蛙从跳石子, 都从0号石子开始, 每只能越过xi个石子.问所 ...
- HDU 5514 Frogs 欧拉函数
题意: 有\(m(1 \leq m \leq 10^9)\)个石子排成一圈,编号分别为\(0,1,2 \cdots m-1\). 现在在\(0\)号石头上有\(n(1 \leq n \leq 10^4 ...
- HDU 5514 Frogs (容斥原理+因子分解)
题目链接 题意:有n只青蛙,m个石头(围成圆圈).第i只青蛙每次只能条ai个石头,问最后所有青蛙跳过的石头的下标总和是多少? 题解:暴力肯定会超时,首先分解出m的因子,自己本身不用分,因为石头编号是0 ...
- 很好的容斥思想 HDU 5514
题目描述:有n只青蛙,m个石头(围成圆圈).第i只青蛙每次只能条a[i]个石头,问最后所有青蛙跳过的石头的下标总和是多少? 思路:经过绘图我们发现,每次跳过的位置一定是k*gcd(a[i], m).然 ...
随机推荐
- ajax的优缺点
ajax(Asynchronous Javascript And XML) 异步的js和XML 以前更多的是使用XML的数据格式,现在数据格式更多的是json ajax的优势:单页面应用(SPA) ...
- Android五大布局
原文地址:http://blog.51cto.com/liangruijun/632532 https://www.cnblogs.com/devinzhang/archive/2012/01/19/ ...
- docker 系列 - 基础镜像环境和Docker常用命令整理
=======================docker 基础镜像环境 alpine=======================可以使用 docker search 命令搜索指定的 image, ...
- 十种MYSQL显错注入原理讲解(三)
这回间隔时间有点长了,年前年后忙的头晕眼花,外加大病.下面我继续讲解. 1.multipolygon() and multipolygon((select * from(select * from(s ...
- 【noip 2016】提高组
D1T1.玩具谜题 题目链接 直接模拟就好了……water. #include<cstdio> int n,m,a,s,ans; ];]; int main() { scanf(" ...
- PHP实现流程管理功能
核心逻辑:流程管理,在各种系统中扮演很重要的地位,可以把设定好的流程放入系统中,规定好几个节点,只要所有节点都通过,就可以通过. 建立四张数据库表: 1.我们首先做一个新建流程页面 flow.php, ...
- c# 适配器批量修改
DataTable dt; //在方法外部申明数据表SqlDataAdapter adapter; //在方法外部申明数据适配器 查询方法adapter = new SqlDataAdapter(Sq ...
- Docker 更改默认存储目录 - 十一
Cemtos 7 Docker 默认目录是 /var/lib/docker docker info 查看 docker 配置信息 更改 docker 默认目录 : 编辑 启动文件: 编辑 /usr/ ...
- ue4网络同步概念笔记
网络同步主要的概念是 复制. 不是以前的S,C逻辑分离. 是S复制到C通过 Switch Has Authority 将S与C的逻辑在程序内分离. 所属权:每个连接到S的C都有自己的 控制权.从 ...
- ThinkPHP5基础学习
一.目录与文件结构 二.控制器 三.数据库 四.模型 五.模板