剩余系

Problem - I - Codeforces

题意

给定 \(H,M,A\)

\(2<=H,M<=10^9,\;0<=A<=\frac {H*M}2\)

假设一个钟表有 \(H\) 小时,一小时有 \(M\) 分钟,求一天中有多少整数分钟,满足时针、分钟夹角不超过 \(\frac {2\pi A}{HM}\)

思路

  1. 时针角速度:\(v_h=\frac {2\pi}{HM}\),分针角速度: \(v_m=\frac {2\pi}{M}\)

  2. 设 \(t\) 分钟时 \((v_m-v_h)*t\equiv \frac {2\pi A}{HM}\pmod {H*M}\)

    即 \((H-1)*t\equiv A \pmod {H*M}\), 求有多少个 \(t\) 满足 \((H-1)*t \mod ({H*M})<=A\)

  3. 在 \(ax\equiv b\pmod m\) 中,令 \(g=\gcd(a,m)\)

    则 \(x\in[0,m-1]\),在模 m 意义下 \(a*x\) 有 \(g\) 轮循环,每轮有 \(0,a,2*a...\) 等 \(\lfloor\frac mg\rfloor+1\) 种取值

  4. 因此模为 \([1,A]\) 有 \(\frac Ag\) 种取值

  5. 对称地,模为 \([H*M-A,H*M-1]\) 与 \([1,A]\) 的 \(x\) 取值的对应,也有 \(\lfloor\frac Ag\rfloor\) 个, 再假设 模为 0 恒有一个

  6. 有 \(g\) 轮循环,答案为 \(ans=(\lfloor\frac Ag\rfloor*2+1)*g\)

  7. 注意特判,当 \(A == \frac {HM}2\) 时,所有分钟都是,即有 \(H*M\) 个,但按上述算法,由于 \(A==H*M-A\) ,会多算一个

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll H, M, A;
ll gcd(ll a, ll b)
{
if (b == 0)
return a;
return gcd(b, a % b);
} ll solve()
{
if (A * 2 == H * M)
return H * M;
ll a = H - 1, m = H * M;
ll g = gcd(m, a);
ll ans = (A / g * 2 + 1) * g;
return ans;
} int main()
{
cin >> H >> M >> A;
cout << solve() << endl;
return 0;
}

最新文章

  1. PHP通过加锁实现并发情况下抢码实现
  2. [Android Pro] 完美解决隐藏Listview和RecyclerView去掉滚动条和滑动到边界阴影的方案
  3. 安装MySQL5.7
  4. kafka:一个分布式消息系统
  5. ZeroMQ实例-使用ZeroMQ进行windows与linux之间的通信
  6. 到底为什么你的APP项目烂尾了?
  7. asp.net下拉列表绑定数据库多个字段
  8. Python 练习 12
  9. Collection、Iterator、Set、HashSet
  10. Qt源代码分析
  11. Tap.js
  12. jquery easyui二次开发总结(二)
  13. 字符串解析成easyui-tree的格式
  14. WCF技术剖析之四:基于IIS的WCF服务寄宿(Hosting)实现揭秘
  15. ubuntu-17.10 安装 FANN
  16. Node.js:上传文件,服务端如何获取文件上传进度
  17. 2019.01.21 bzoj1758: [Wc2010]重建计划(01分数规划+长链剖分+线段树)
  18. captcha ~ 生成验证码图片
  19. 深入浅出Nodejs读书笔记
  20. sid-msg.map文件概述

热门文章

  1. PHP 网页 apache24+php8 yii basic
  2. Mac提升效率软件推荐
  3. centos7部署Nacos单机版
  4. 若依gateway
  5. Linux 在miniconda和anaconda同时安装时,卸载miniconda
  6. React自定义组件参数小驼峰命名提示警告 Warning: React does not recognize the `xxXxx` prop on a DOM element.
  7. UE4大地图(流关卡、无缝地图)
  8. 高斯判别分析GDA推导与代码实现
  9. vue项目跳转外部链接,替换链接地址参数信息
  10. Maven简答题