zoukankan      html  css  js  c++  java
  • Comet OJ

    原题:Comet OJ - Contest #4-B

    https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门

    一开始就想着暴力打表,结果。。

    前缀和是个很好的工具,本题可以用相邻前缀和之差得到结果。

    例如:K=4:

    1 1 1 1
    0 1 1 1
    1 0 1 1
    1 1 0 1
     1 #include <cstdio>
     2 
     3 using int64 = long long;
     4 
     5 int main() {
     6   int T;
     7   scanf("%d", &T);
     8   for (int cas = 1; cas <= T; ++cas) {
     9     int64 l, r, k;
    10     scanf("%lld%lld%lld", &l, &r, &k);
    11     if (k & 1) printf("%lld
    ", r - l + 1);
    12     else {
    13       auto sum = [] (int64 n, int64 k) {
    14         if (n < k) return n + 1;
    15         int64 l = n / k;
    16         int64 zeros = l / (k + 1) * k;
    17         if (l % (k + 1)) {
    18           zeros += l % (k + 1) - 1;
    19           zeros += n % k >= l % (k + 1) - 1;
    20         }
    21         return n + 1 - zeros;
    22       };
    23       printf("%lld
    ", sum(r, k) - sum(l - 1, k));
    24     }
    25   }
    26   return 0;
    27 }
  • 相关阅读:
    JS函数式编程【译】前言
    11.15周总结
    11.13
    11.12
    11.11
    11.10
    11.9
    11.8周总结
    11.6
    11.5
  • 原文地址:https://www.cnblogs.com/lanclot-/p/10922836.html
Copyright © 2011-2022 走看看