QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#361025#8340. 3 SumlanhfWA 136ms15212kbC++142.1kb2024-03-22 18:08:512024-03-22 18:08:51

Judging History

你现在查看的是最新测评结果

  • [2024-09-20 10:20:30]
  • hack成功,自动添加数据
  • (/hack/848)
  • [2024-03-22 18:08:51]
  • 评测
  • 测评结果:WA
  • 用时:136ms
  • 内存:15212kb
  • [2024-03-22 18:08:51]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

using ll = long long;

#define MOD (ll(1000000009))
#define MODb (ll(998244353))

// Binpow and stuff
ll BOW(ll a, ll x, ll p) {
  if (!x) return 1;
  ll res = BOW(a, x / 2, p);
  res *= res;
  res %= p;
  if (x % 2) res *= a;
  return res % p;
}
ll INV(ll a, ll p) {
  return BOW(a, p - 2, p);
}

vector < int > vec;
int n, m, i, j, k, t, t1, u, v, a, b;
string s[501];
int hsh[501];
int hsh1, hsh2, hsh3;
int hshb[501];
int hsh1b, hsh2b, hsh3b;

string reduc(string s, int k) {
  int a = 0, i, j;
  string res;
  for (i = 0; i < k; i++) {
    for (j = i; j < s.length(); j += k) {
      a += s[j];
    }
    res.push_back(a % 10);
    a /= 10;
  }
  while (a) {
    res.push_back(a % 10);
    a /= 10;
  }
  return res;
}

int main() {
  cin.tie(0)->sync_with_stdio(0);
  cin >> n >> k;
  for (i = 0; i < n; i++) {
    cin >> s[i];
    reverse(s[i].begin(), s[i].end());
    for (char &c : s[i]) c -= '0';
    while (s[i].size() > k) {
      s[i] = reduc(s[i], k);
    }
  }
  for (i = 0; i < n; i++) {
    hsh[i] = 0;
    for (j = s[i].length() - 1; j >= 0; j--) {
      hsh[i] = ll(hsh[i]) * 10 + s[i][j] % MOD;
    }
  }
  hsh1 = 1;
  for (i = 0; i < k; i++) {
    hsh1 = ll(hsh1) * 10 % MOD;
  }
  hsh1 += MOD - 1;
  hsh1 %= MOD;
  hsh2 = hsh1 * 2 % MOD;
  hsh3 = (hsh1 + hsh2) % MOD;

  for (i = 0; i < n; i++) {
    hshb[i] = 0;
    for (j = s[i].length() - 1; j >= 0; j--) {
      hshb[i] = ll(hshb[i]) * 10 + s[i][j] % MODb;
    }
  }
  hsh1b = 1;
  for (i = 0; i < k; i++) {
    hsh1b = ll(hsh1b) * 10 % MODb;
  }
  hsh1b += MODb - 1;
  hsh1b %= MODb;
  hsh2b = hsh1b * 2 % MODb;
  hsh3b = (hsh1b + hsh2b) % MODb;

  int res = 0;
  for (i = 0; i < n; i++)
    for (j = i; j < n; j++)
      for (k = j; k < n; k++) {
        u = ((hsh[i] + hsh[j]) % MOD + hsh[k]) % MOD;
        v = ((hshb[i] + hshb[j]) % MODb + hshb[k]) % MODb;
        bool fu = (u == 0 || u == hsh1 || u == hsh2 || u == hsh3);
        bool fv = (v == 0 || v == hsh1b || v == hsh2b || v == hsh3b);
        res += fu && fv;
      }
  cout << res;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 3624kb

input:

4 1
0
1
10
17

output:

3

result:

ok 1 number(s): "3"

Test #2:

score: 0
Accepted
time: 98ms
memory: 4352kb

input:

500 859
7118711592236878297922359501613604144948355616986970837340677671376753603836852811886591300370143151943368529129749813118476151865844255212534355441611481420938483178075143062691345257288242460282715389758789648541099090735875617822348551942134616963557723055980260082230902505269975518146286...

output:

0

result:

ok 1 number(s): "0"

Test #3:

score: 0
Accepted
time: 136ms
memory: 14056kb

input:

500 17336
11871159223687829792235950161360414494835561698697083734067767137675360383685281188659130037014315194336852912974981311847615186584425521253435544161148142093848317807514306269134525728824246028271538975878964854109909073587561782234855194213461696355772305598026008223090250526997551814628...

output:

0

result:

ok 1 number(s): "0"

Test #4:

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

input:

500 1
751324443898124078584847834484321089092662321556147445230263526014359393841194947303407593948729802551881289193716611867931891257925091769456350249725997883453296895094445731130479434019358742162771547784250401546380268386074363779242500860317042151185119666027858022664683818314351285215150806...

output:

2327631

result:

ok 1 number(s): "2327631"

Test #5:

score: 0
Accepted
time: 105ms
memory: 15212kb

input:

500 2
408542968136435277974575411503179002415404345446801430469044749372949272333801248935236224652806667129749035002588943020176263162139056819871274824302889304493205266143688886696157147111754418731401856424401766968832165255416237731963027205324149660112574729610391396555581935236134531799950318...

output:

212002

result:

ok 1 number(s): "212002"

Test #6:

score: -100
Wrong Answer
time: 127ms
memory: 12984kb

input:

500 11500
75411775796562109942642493394321873284995260953010112281856775261847503626737348402159485133662757032091519863427156582689971229143089317472838196453888261138079171290535429921921548971897026706656838415620603757605079012541561774699628665865662183868374645956694140356716037674688084770628...

output:

0

result:

wrong answer 1st numbers differ - expected: '7675', found: '0'