2020ICPC沈阳I - Rise of Shadows
剩余系
题意
给定
假设一个钟表有 小时,一小时有 分钟,求一天中有多少整数分钟,满足时针、分钟夹角不超过
思路
-
时针角速度:,分针角速度:
-
设 分钟时
即 , 求有多少个 满足
-
在 中,令
则 ,在模 m 意义下 有 轮循环,每轮有 等 种取值
-
因此模为 有 种取值
-
对称地,模为 与 的 取值的对应,也有 个, 再假设 模为 0 恒有一个
-
有 轮循环,答案为
-
注意特判,当 时,所有分钟都是,即有 个,但按上述算法,由于 ,会多算一个
代码
#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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!