2020ICPC沈阳I - Rise of Shadows
剩余系
题意
给定 \(H,M,A\)
\(2<=H,M<=10^9,\;0<=A<=\frac {H*M}2\)
假设一个钟表有 \(H\) 小时,一小时有 \(M\) 分钟,求一天中有多少整数分钟,满足时针、分钟夹角不超过 \(\frac {2\pi A}{HM}\)
思路
时针角速度:\(v_h=\frac {2\pi}{HM}\),分针角速度: \(v_m=\frac {2\pi}{M}\)
设 \(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\)
在 \(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\) 种取值
因此模为 \([1,A]\) 有 \(\frac Ag\) 种取值
对称地,模为 \([H*M-A,H*M-1]\) 与 \([1,A]\) 的 \(x\) 取值的对应,也有 \(\lfloor\frac Ag\rfloor\) 个, 再假设 模为 0 恒有一个
有 \(g\) 轮循环,答案为 \(ans=(\lfloor\frac Ag\rfloor*2+1)*g\)
注意特判,当 \(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;
}
2020ICPC沈阳I - Rise of Shadows的更多相关文章
- 2020 ICPC 沈阳站 I - Rise of Shadows 题解
题面看这里 \(PS\):符号 \([\ \rm P\ ]\) 的意义是:当表达式 \(\rm P\) 为真则取值为 \(1\),为假则取值为 \(0\). 题目大意 给你一个一天有 \(H\) ...
- 2020ICPC沈阳站C题 Mean Streets of Gadgetzan
大致题意 原题链接 翻译 \(有n个逻辑变量 请你分别对它们赋值 使其满足m个命题\) \(命题有四种格式:\) 单独数字x 表示第x个逻辑变量为真 ! + 数字x 表示第x个逻辑变量为假 若干个数字 ...
- Material Design系列第四篇——Defining Shadows and Clipping Views
Defining Shadows and Clipping Views This lesson teaches you to Assign Elevation to Your Views Custom ...
- The Rise of Meta Learning
The Rise of Meta Learning 2019-10-18 06:48:37 This blog is from: https://towardsdatascience.com/the- ...
- 2016ACM/ICPC亚洲区沈阳站-重现赛赛题
今天做的沈阳站重现赛,自己还是太水,只做出两道签到题,另外两道看懂题意了,但是也没能做出来. 1. Thickest Burger Time Limit: 2000/1000 MS (Java/Oth ...
- hdu 1004 Let the Balloon Rise
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- Let the Balloon Rise 分类: HDU 2015-06-19 19:11 7人阅读 评论(0) 收藏
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- HDU 1004 Let the Balloon Rise map
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- HDU1004 Let the Balloon Rise(map的简单用法)
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HD1004Let the Balloon Rise
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
随机推荐
- junit使用进阶
一.模拟http请求测试接口 新建一个controller @RestController public class AATestController { @GetMapping("/tes ...
- 图片在div中居中
要将一张图片垂直和水平居中在一个 <div> 元素中,你可以使用以下 CSS 样式: div { display: flex; justify-content: center; align ...
- MYSQL --存储引擎的对比
主要介绍三种 InnoDB .MyISAM .Memory 一.InnoDB 介绍: InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后默认的存储引擎 特点: DML操作遵循 ...
- PageHelper大致逻辑
简单涉及以下几个类: PageHelper PageMethod PageParam PageInterceptor implement Interceptor PageHelperAutoC ...
- 在k8s中使用harbor仓库
在k8s中使用harbor仓库 修改每个node上的docker认证仓库 将每个node节点上的docker同样需要配置可信任仓库 vi /etc/docker/daemon.json #修改为 {& ...
- Mysql-不同场景下操作/查询数据库表
1. 通过关联字段把一张表的字段值更新另一张表的字段值 update table_a a, table_b b set a.username = b.username where a.id = b.i ...
- js导出数据为excel表
1.接口数据后端写, 2.代码如下: var params={ "filters":[ {"propertyCode":"sequenceNo&quo ...
- 9.java单链表初学代码复现及一些不值一提的小问题(2)
首先写完了update和delete函数,在之前的铺垫下.倒是不难,结构和之前的都相同,遍历找到节点后处理该节点.代码如下 public void update(teamNode node){ tea ...
- TP开发项目时遇到的问题记录
1.下载功能. TP自带Http下载类,使用时new一个就行,示例代码: public function download(){ //接收公文id $id = I('get.fid'); //根据公文 ...
- Ubuntu之docker搭建dvwa
前提,已经安装好docker. 首先,搜索DVWA镜像,