I. Rise of Shadows(类欧几里得)

I. Rise of Shadows

一天有 H H H个小时, M M M分钟,问,有多少个整数分钟,满足时针与分针的角度 ≤ α \le \alpha α α = 2 π A H M \alpha = \frac{2 \pi A}{HM} α=HM2πA
∑ i = 0 H − 1 ∑ j = 0 M − 1 [ ∣ 2 π ( i × M + j ) H M − 2 π j M   ∣ ≤ 2 π A H M ] ∑ i = 0 H − 1 ∑ j = 0 M − 1 [ ∣ i × M + j − H × j ∣ ≤ A ] H × M − ∑ i = 0 H − 1 ∑ j = 0 M − 1 [ i × M + j − H × j > A ] − ∑ i = 0 H − 1 ∑ j = 0 M − 1 [ i × M + j − H × j < − A ] \sum_{i = 0} ^{H - 1} \sum_{j = 0} ^{M - 1} [ \mid\frac{2 \pi(i \times M + j)}{HM} - \frac{2\pi j}{M} \ \mid \le \frac{2 \pi A}{HM}]\\ \sum_{i = 0} ^{H - 1} \sum_{j = 0} ^{M - 1} [\mid i \times M + j - H \times j \mid \le A]\\ H \times M - \sum_{i = 0} ^{H - 1} \sum_{j = 0} ^{M - 1} [i \times M + j - H \times j > A] - \sum_{i = 0} ^{H - 1} \sum_{j = 0} ^{M - 1} [i \times M + j - H \times j < -A]\\ i=0H1j=0M1[HM2π(i×M+j)M2πj HM2πA]i=0H1j=0M1[i×M+jH×jA]H×Mi=0H1j=0M1[i×M+jH×j>A]i=0H1j=0M1[i×M+jH×j<A]

∑ i = 0 H − 1 ∑ j = 0 M − 1 [ i × M + j − H × j > A ] ∑ i = 0 H − 1 ∑ j = 0 M − 1 [ i > ( H − 1 ) × j + A M ] ∑ j = 0 M − 1 ( H − 1 − ( H − 1 ) × j + A M ) M × ( H − 1 ) − ∑ i = 0 M − 1 ( H − 1 ) × i + A M \sum_{i = 0} ^{H - 1} \sum_{j = 0} ^{M - 1} [i \times M + j - H \times j > A]\\ \sum_{i = 0} ^{H - 1} \sum_{j = 0} ^{M - 1} [i > \frac{(H - 1) \times j + A}{M}]\\ \sum_{j = 0} ^{M - 1} \left(H - 1 - \frac{(H - 1) \times j + A}{M} \right)\\ M \times (H - 1) - \sum_{i = 0} ^{M - 1} \frac{(H - 1) \times i + A}{M}\\ i=0H1j=0M1[i×M+jH×j>A]i=0H1j=0M1[i>M(H1)×j+A]j=0M1(H1M(H1)×j+A)M×(H1)i=0M1M(H1)×i+A

∑ i = 0 H − 1 ∑ j = 0 M − 1 [ i × M + j − H × j < − A ] ∑ i = 0 H − 1 ( M − ∑ j = 0 M − 1 [ i × M + j − H × j ≥ − A ] ) H × M − ∑ i = 0 H − 1 ∑ j = 0 M − 1 [ i × M + j − H × j > − A − 1 + ( H + 1 ) − ( H + 1 ) ] H × M − ∑ j = 0 M − 1 ∑ i = 0 H − 1 [ i > ( H − 1 ) × j + ( H + 1 ) M − A − 1 ) M − ( H + 1 ) ] H × M − ∑ j = 0 M − 1 H − 1 − ( H − 1 ) × j + ( H + 1 ) M − A − 1 M + H + 1 − H M + ∑ i = 0 M − 1 ( H − 1 ) × i + ( H + 1 ) M − A − 1 M \sum_{i = 0} ^{H - 1} \sum_{j = 0} ^{M - 1} [i \times M + j - H \times j < -A]\\ \sum_{i = 0} ^{H - 1} \left(M - \sum_{j = 0} ^{M - 1} [i \times M + j - H \times j \ge -A] \right)\\ H \times M - \sum_{i = 0} ^{H - 1} \sum_{j = 0} ^{M -1} [i \times M + j - H \times j > -A - 1 + (H + 1) - (H + 1)]\\ H \times M - \sum_{j = 0} ^{M - 1} \sum_{i = 0} ^{H - 1} [i > \frac{(H - 1) \times j +(H + 1)M - A - 1)}{M} - (H + 1)]\\ H \times M - \sum_{j = 0} ^{M - 1} H - 1 - \frac{(H - 1) \times j +(H + 1)M - A - 1}{M} + H + 1\\ -HM + \sum_{i = 0} ^{M - 1} \frac{(H - 1) \times i + (H + 1)M - A - 1}{M}\\ i=0H1j=0M1[i×M+jH×j<A]i=0H1(Mj=0M1[i×M+jH×jA])H×Mi=0H1j=0M1[i×M+jH×j>A1+(H+1)(H+1)]H×Mj=0M1i=0H1[i>M(H1)×j+(H+1)MA1)(H+1)]H×Mj=0M1H1M(H1)×j+(H+1)MA1+H+1HM+i=0M1M(H1)×i+(H+1)MA1
综上,答案为:
M + H M + ∑ i = 0 M − 1 ( H − 1 ) × i + A M − ∑ i = 0 M − 1 ( H − 1 ) × i + ( H + 1 ) M − A + 1 M M + HM + \sum_{i = 0} ^{M - 1} \frac{(H - 1) \times i + A}{M} - \sum_{i = 0} ^{M - 1} \frac{(H - 1) \times i + (H + 1) M - A + 1}{M} M+HM+i=0M1M(H1)×i+Ai=0M1M(H1)×i+(H+1)MA+1

#include <bits/stdc++.h>
#define int long long

using namespace std;

long long f(long long a, long long b, long long c, long long n) {
  if (!a) {
    return (b / c) * (n + 1);
  }
  if (a >= c || b >= c) {
    return f(a % c, b % c, c, n) + (b / c) * (n + 1) + (a / c) * n * (n + 1) / 2;
  }
  long long m = (a * n + b) / c;
  return n * m - f(c, c - b - 1, a, m - 1);
}

signed main() {
  // freopen("in.txt", "r", stdin);
  // freopen("out.txt", "w", stdout);
  int h, m, a;
  cin >> h >> m >> a;
  cout << min(m + h * m + f(h - 1, a, m, m - 1) - f(h - 1, (h + 1) * m - a - 1, m, m - 1), h * m) << "\n";
  return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值