\(PS\):符号 \([\ \rm P\ ]\) 的意义是:当表达式 \(\rm P\) 为真则取值为 \(1\),为假则取值为 \(0\)。

题目大意

给你一个一天有 \(H\)​​​​​​​ 小时、一小时有 \(M\)​​​​​​​​ 分钟的表和一个正整数 \(A\)​,问一天内有多少个整数时刻,使得分针与时针的夹角小于等于 \(\displaystyle\frac{2\pi A}{HM}\)​。

题目分析

易知分针转速 \(w_1=\displaystyle \frac{2\pi}{M}\)​​​​​,时针转速 \(w_2=\displaystyle\frac{2\pi}{HM}\)​​​​,设当前时刻为 \(T\)​​​​;

一天有 \(HM\)​​​​ 个整数时刻,即 \(T\in[0,HM)\)​​​​;

于是对于每一个时刻,我们判断一下两个指针的夹角 \(\theta\)​​​​​ 是否小于等于 \(\displaystyle\frac{2\pi A}{HM}\)​​​​​​​​​ ,满足就贡献加加,最后输出总贡献即可。

方法一:数论

对于任意时刻 \(T\) 与两指针间的夹角 \(\theta\),显然有:

\[\theta=(w_1-w_2)T=\displaystyle\frac{2\pi(H-1)T}{HM}​
\]

注意到 \(\theta\in[0,2\pi]\)​​,所以还要对 \(2\pi\)​​ 取个模(分针转一圈又转回来了),即:

\[\theta=\displaystyle\frac{2\pi(H-1)T}{HM}\mod{2\pi}
\]

同时因为两个指针之间的夹角可以选到两个数值,逆时针转有一个夹角,顺时针转有一个夹角,这里我们肯定是选更小的角来判断是否满足条件,即最终我们要求的是:

\[\sum_{T=0}^{HM}[\ \min(\theta,2\pi-\theta)\leq\frac{2\pi A}{HM}\ ]
\]

可以转化为:

\[\sum_{T=0}^{HM}[\ \theta\leq\frac{2\pi A}{HM}\or\theta\ge2\pi-\frac{2\pi A}{HM}\ ]
\]

把 \(\theta=\displaystyle\frac{2\pi(H-1)T}{HM}\mod{2\pi}\) 代入并化简得:

\[\sum_{T=0}^{HM}[\ T(H-1)\mod{HM}\leq A\ ]\or [\ T(H-1)\mod{HM}\geq HM-A\ ]
\]

此时我们其实就可以把 \(HM\)​​​ 看作是 \(2\pi\)​​​,\(H-1\)​​ 看作是每过一个时刻两个指针夹角的变化量,然后分两种情况考虑:

一、当 \(\mathbf {A=HM/2}\)​​​ 时,问题等价于”一天内有多少个整数时刻,使得分针与时针的夹角小于等于 \(\pi\)​​“,显然每个时刻都满足(如果顺时针看夹角大于 \(\pi\)​​,那逆时针看一定小于,反之亦然),此时答案为 \(HM\)​​,特判即可;

二、当 \(\mathbf {A\neq HM/2}\)​ 时,若有 \(T(H-1)\mod{HM}\leq A\)​,则一定不会有 \(T(H-1)\mod{HM}\geq HM-A\)​​​​,所以答案就是这两部分的贡献相加。

我们令 \(G=\gcd(H-1,HM)\)。

先计算式子的左边:

\[\sum_{T=0}^{HM}[\ T(H-1)\mod{HM}\leq A\ ]
\]

当 \(G=1\)​​​​ 时 ,因为 \(T\in[0,HM)\)​​​​,构成了一个模 \(HM\) 的完全剩余系,由完全剩余系的性质可得 \(T(H-1)\mod{HM}\)​​​​ 也是一个完全剩余系,即它一定取遍了 \(0\sim HM-1\)​​​​ 的每一个数,此时我们就不用关心到底在哪个时刻造成了贡献,只需知道范围内有多少个数满足小于等于 \(A\) 即可,显然有 \(0\sim A\) 总共 \(A+1\) 个数满足,因此这部分的贡献就是 \(A+1\)​​​​​。

当 \(G\neq1\)​​​​ 时,我们利用同余的另一个性质: \(\displaystyle ac\equiv bc\pmod d\iff a\equiv b\pmod{\frac{d}{(c,d)}}\)​​​​,把式子转化为:

\[\sum_{T=0}^{HM}[\ \frac{T(H-1)}{G}\mod{\frac{HM}{G}}<=\lfloor\frac AG\rfloor\ ]
\]

相当于我们把 \(T\in[0,HM)\)​​​​​ 平均分成了 \(G\)​​​​​ 段,每一段的 \(T\) 都构成了一个模 \(\displaystyle\frac{HM}{G}\) 的完全剩余系,此时这里的每一段其实就等价于上面 \(G=1\)​​​​​ 的情况,只是 \(T\)​​​ 的范围和模数变了下而已,因此每段都造成了 \(\displaystyle \lfloor\frac AG\rfloor+1\)​​​ 的贡献,左边的总贡献就是 \(G*(\displaystyle \lfloor\frac AG\rfloor+1)\)​​​​​​​。

再看式子右边:

\[\sum_{T=0}^{HM}[\ T(H-1)\mod{HM}\geq HM-A\ ]
\]

同样地,当 \(G=1\)​​​​ 时,跟上面一样分析一波,发现其实是一样的思路(显然左边跟右边造成的贡献是对称的),只不过因为 \(T\)​​​​ 不能取到 \(HM\)​​​​,所以贡献只有 \(A\)(\(HM-A\sim HM-1\) 共有 \(A\) 个数)​​​​。

当 \(G\neq1\) 时,也同上,把 \(T\) 分成 \(G\) 段,右边的总贡献就是 \(G*\displaystyle \lfloor\frac AG\rfloor\)。

因此最终答案就是左边贡献和右边贡献之和,即 \(G*(\displaystyle 2\lfloor\frac AG\rfloor+1)\)​。

Code
#include<bits/stdc++.h>
using namespace std;
int main(){
long long H,M,A;
cin >> H >> M >> A;
if(H*M==A*2){
cout << H*M;
}
else {
long long G=__gcd(H-1,H*M);
cout << G*(2*(A/G)+1);
}
}

方法二:类欧几里得

待填坑~~

2020 ICPC 沈阳站 I - Rise of Shadows 题解的更多相关文章

  1. 2016 ACM/ICPC 沈阳站 小结

    铜铜铜…… 人呐真奇怪 铁牌水平总想着运气好拿个铜 铜牌水平总想着运气好拿个银 估计银牌的聚聚们一定也不满意 想拿个金吧 这次比赛挺不爽的 AB两道SB题,十分钟基本全场都过了 不知道出这种题有什么意 ...

  2. HDU 5950Recursive sequence ICPC沈阳站

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  3. 2015 ICPC 沈阳站M题

    M - Meeting Time Limit:6000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit ...

  4. 2016ACM/ICPC亚洲区沈阳站-重现赛赛题

    今天做的沈阳站重现赛,自己还是太水,只做出两道签到题,另外两道看懂题意了,但是也没能做出来. 1. Thickest Burger Time Limit: 2000/1000 MS (Java/Oth ...

  5. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  6. HDU 5952 Counting Cliques 【DFS+剪枝】 (2016ACM/ICPC亚洲区沈阳站)

    Counting Cliques Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  7. HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Thickest Burger Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  8. HDU 5949 Relative atomic mass 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Relative atomic mass Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  9. 2015ACM/ICPC亚洲区沈阳站 Pagodas

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

随机推荐

  1. 深入HTML5第一天

    页面的title一般是30-40个字符:分别为主页,详情页,列表页  keywords:100个字符  description: em是:emphasize: 强调,着重  i:italic斜体的 : ...

  2. 做PPT总是很难找到好看、有质感的图片,怎么办?

    1.制作PPT时,要想提升整体质感,就需要插入一些图片.当你进入到这个阶段,就意味着你剩下用来做PPT的时间,可能比较紧张了.所以,你的重中之重是,在最短的时间内找到合适的照片. 2.想快速找到好看. ...

  3. P3793-由乃救爷爷【分块,ST表】

    正题 题目链接:https://www.luogu.com.cn/problem/P3793 题目大意 给出\(n\)个数字的一个序列\(m\)次询问区间最大值 保证数据随机 \(1\leq n,m\ ...

  4. WPF进阶技巧和实战06-控件模板

    逻辑树和可视化树 System.Windows.LogicalTreeHelper System.Windows.Media.VisualTreeHelper 逻辑树类(LogicalTreeHelp ...

  5. IdentityServer4[5]简化模式

    Implicit简化模式(直接通过浏览器的链接跳转申请令牌) 简化模式是相对于授权码模式而言的.其不再需要[Client]的参与,所有的认证和授权都是通过浏览器来完成的. 创建项目 IdentityS ...

  6. 关于国密HTTPS 的那些事(一)

    关于国密HTTPS 的那些事(一) 随着<密码法>密码法的颁布与实施,国密的应用及推广终于有法可依.而对于应用国密其中的一个重要组成部分----国密HTTPS通信也应运而生.为了大家更好的 ...

  7. disruptor笔记之八:知识点补充(终篇)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. 题解 「BZOJ2178」圆的面积并

    题目传送门 题目大意 给出 \(n\) 个圆,求它们并的面积大小. \(n\le 10^3\) 思路 如果您不会自适应辛普森法,请戳这里学习 其实我们发现,如果我们设 \(f(x)\) 表示 \(x= ...

  9. SoapUI入门实例

    一.Soapui介绍 WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数.参数和返回值.它是WebSer ...

  10. JVM详解(五)——运行时数据区-方法区

    一.概述 1.介绍 <Java虚拟机规范>中明确说明:尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩.但对于HotSpot JVM而言,方法 ...