QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#375438#8340. 3 Sumisaunoya100 135ms71600kbC++233.2kb2024-04-03 10:47:032024-04-03 10:47:03

Judging History

你现在查看的是测评时间为 2024-04-03 10:47:03 的历史记录

  • [2024-09-20 10:20:56]
  • 自动重测本题所有获得100分的提交记录
  • [2024-09-20 10:20:30]
  • hack成功,自动添加数据
  • (/hack/848)
  • [2024-04-03 10:47:03]
  • 评测
  • 测评结果:100
  • 用时:135ms
  • 内存:71600kb
  • [2024-04-03 10:47:03]
  • 提交

answer

#include <cmath>
#if defined(LOCAL)
#include <D:/cp/templates/my_template_compiled.hpp>
#else
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx2,popcnt")
#include <bits/stdc++.h>
#define debug(...) 42
#define rep1(a) for (auto i = 0; i < a; i++)
#define rep2(i, a) for (auto i = 0; i < a; i++)
#define rep3(i, a, b) for (auto i = a; i < b; i++)
#define rep4(i, a, b, c) for (auto i = a; i < b; i += c)
#define overload4(a, b, c, d, e, ...) e
#define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__)

#define pb emplace_back
using namespace std;
template <typename T, typename T2> void cmin(T &x, const T2 &y) {
  x = x < y ? x : y;
}
template <typename T, typename T2> void cmax(T &x, const T2 &y) {
  x = x > y ? x : y;
}
template <typename T> using vc = vector<T>;
using ll = long long;
using vi = vector<int>;
using vl = vector<ll>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
mt19937 rng(time(NULL));
const int INF = 1000000000;
const ll LNF = 1000000000000000000;
#define sz(x) int((x).size())
#define all(x) begin(x), end(x)
#define fi first
#define se second
#endif

const int mod = 1e9 + 7;
const int mod2 = 1e9 + 9;

void solve() {
  int n, K;
  cin >> n >> K;
  auto fit = [&](auto &fit, const vl &s) -> vl {
    if (sz(s) <= K) {
      if (s == vl(K, 9)) {
        return vl(K, 0);
      } else {
        return s;
      }
    } else {
      vl cur(K, 0);
      rep(i, sz(s)) cur[i % K] += s[i];
      rep(i, K) {
        int car = cur[i] / 10;
        cur[i] %= 10;
        if (car) {
          if (i + 1 < K) {
            cur[i + 1] += car;
          } else {
            cur.push_back(car);
          }
        }
      }
      while ((int)cur.size() > K && cur.back() == 0) {
        cur.pop_back();
      }
      return fit(fit, cur);
    }
    assert(0);
  };

  vc<vl> s(n);
  rep(n) {
    string cur;
    cin >> cur;
    vl a(sz(cur));
    rep(j, sz(cur)) a[j] = cur[j] - '0';
    reverse(all(a));
    if (sz(a) < K) {
      a.resize(K);
    }
    // debug(a);
    s[i] = fit(fit, a);
  }
  debug(s);

  vc<pll> val(n);
  vl pw(K + 1);
  vl pw2(K + 1);
  pw[0] = pw2[0] = 1;
  rep(K) pw[i + 1] = pw[i] * 10 % mod;
  rep(K) pw2[i + 1] = pw2[i] * 10 % mod2;

  rep(n) {
    ll w = 0;
    rep(j, K) { w = (w + s[i][j] * pw[j] % mod) % mod; }
    ll w2 = 0;
    rep(j, K) { w2 = (w2 + s[i][j] * pw2[j] % mod2) % mod2; }
    val[i] = pll(w, w2);
  }
  // debug(val);
  vc<pll> target;
  rep(3) {
    target.pb(1ll * i * (pw[K] - 1) % mod, 1ll * i * (pw2[K] - 1) % mod2);
  }
  // debug(target);
  ll ans = 0;
  map<pll, int> cur;
  rep(j, n) {
    cur[val[j]]++;
    rep(k, j, n) {
      rep(l, 3) {
        pll cur_w =
            pll((target[l].fi + mod - val[j].fi + mod - val[k].fi) % mod,
                (target[l].se + mod2 - val[j].se + mod2 - val[k].se) % mod2);
        // debug(j, k, cur_w);
        if (cur.count(cur_w)) {
          debug(j, k, l);
          ans += cur[cur_w];
        }
      }
    }
  }

  cout << ans << "\n";
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int t = 1;
  // cin >> t;
  while (t--) {
    solve();
  }
  return 0;
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3676kb

input:

4 1
0
1
10
17

output:

3

result:

ok 1 number(s): "3"

Test #2:

score: 0
Accepted
time: 16ms
memory: 7280kb

input:

500 859
7118711592236878297922359501613604144948355616986970837340677671376753603836852811886591300370143151943368529129749813118476151865844255212534355441611481420938483178075143062691345257288242460282715389758789648541099090735875617822348551942134616963557723055980260082230902505269975518146286...

output:

0

result:

ok 1 number(s): "0"

Test #3:

score: 0
Accepted
time: 135ms
memory: 71600kb

input:

500 17336
11871159223687829792235950161360414494835561698697083734067767137675360383685281188659130037014315194336852912974981311847615186584425521253435544161148142093848317807514306269134525728824246028271538975878964854109909073587561782234855194213461696355772305598026008223090250526997551814628...

output:

0

result:

ok 1 number(s): "0"

Test #4:

score: 0
Accepted
time: 34ms
memory: 3856kb

input:

500 1
751324443898124078584847834484321089092662321556147445230263526014359393841194947303407593948729802551881289193716611867931891257925091769456350249725997883453296895094445731130479434019358742162771547784250401546380268386074363779242500860317042151185119666027858022664683818314351285215150806...

output:

2327631

result:

ok 1 number(s): "2327631"

Test #5:

score: 0
Accepted
time: 28ms
memory: 4188kb

input:

500 2
408542968136435277974575411503179002415404345446801430469044749372949272333801248935236224652806667129749035002588943020176263162139056819871274824302889304493205266143688886696157147111754418731401856424401766968832165255416237731963027205324149660112574729610391396555581935236134531799950318...

output:

212002

result:

ok 1 number(s): "212002"

Test #6:

score: 0
Accepted
time: 113ms
memory: 48604kb

input:

500 11500
75411775796562109942642493394321873284995260953010112281856775261847503626737348402159485133662757032091519863427156582689971229143089317472838196453888261138079171290535429921921548971897026706656838415620603757605079012541561774699628665865662183868374645956694140356716037674688084770628...

output:

7675

result:

ok 1 number(s): "7675"

Test #7:

score: 0
Accepted
time: 110ms
memory: 48416kb

input:

500 11500
85355036663164764459816544518601485185320972076300982726542821424439713703229669576802138231401047471351087455159512255765325323540671792953715169122669767368905391325060775725733157611188832204902997772518104188947349204726490597030311894441123834099315122116302203972018409854605418988681...

output:

1070

result:

ok 1 number(s): "1070"

Test #8:

score: 0
Accepted
time: 1ms
memory: 3916kb

input:

1 11500
9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999...

output:

1

result:

ok 1 number(s): "1"

Extra Test:

score: 0
Extra Test Passed