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).然 ...
随机推荐
- URLSearchParams 接口
URLSearchParams 接口定义了很多个用来处理 URL 参数串的方法 他可以把对象转变成url上面查询信息的写法,例如a=1&b=2 可以把请求路由中的字符串 key=1 ,拼接 ...
- git个人学习总结
什么是git 代码管理工具,分布式管理,每个人电脑都是一个完整的版本库.并且有中央服务器(gitHub,gitLab)提供代码交换修改 git基础概念 工作区:自己的项目(有一个隐藏目录 " ...
- GBK 字符集
什么是 GBK ? 中文名 汉字编码字符集 外文名 Chinese Internal Code Specification 全 称 <汉字内码扩展规范> GBK编码,是对GB2312 ...
- 三十五、minishell(3)
35.1 内容 在当前的 minishell 中,如果执行 date clear 命令等,minishell 会停止: 这是因为引入进程组的时候,mshell 放置在前台进程组,同时之后在子进程中又创 ...
- GCC编译器原理(三)------编译原理三:编译过程(3)---编译之汇编以及静态链接【2】
4.1.2 符号解析与重定位 (1)重定位 在完成空间和地址的分配步骤之后,链接器就进入了符号解析和重定位的步骤,这是静态链接的核心部分. 先看看 a.o 的反汇编文件: objdump -d a.o ...
- FILE SIGNATURES TABLE
FILE SIGNATURES TABLE 16 December 2017 This table of file signatures (aka "magic numbers") ...
- python3.x与2.x区别
1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...
- 另一种的SQL注入和DNS结合的技巧
这个技巧有些另类,当时某业界大佬提点了一下.当时真的真的没有理解到那种程度,现在可能也是没有理解到,但是我会努力. 本文章是理解于:http://netsecurity.51cto.com/art/2 ...
- faster rcnn 做识别
faster rcnn 主要分为四个部分: 1. convolutional part: 特征提取 可以使用vgg,resnet 等等 2.region proposal network: 生成 re ...
- 第26月第7天 mac如何matplotlib中文乱码问题
1.mac如何matplotlib中文乱码问题 先查看 ~/.matplotlib/fontList.json 添加SimHei字体(simhei.ttf文件)到 /Library/Framework ...