QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#350051#8340. 3 Sumucup-team992WA 369ms71404kbC++204.4kb2024-03-10 13:27:062024-03-10 13:27:07

Judging History

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

  • [2024-09-20 10:20:30]
  • hack成功,自动添加数据
  • (/hack/848)
  • [2024-03-18 21:48:05]
  • hack成功,自动添加数据
  • (/hack/579)
  • [2024-03-18 21:45:33]
  • hack成功,自动添加数据
  • (/hack/578)
  • [2024-03-10 13:27:07]
  • 评测
  • 测评结果:WA
  • 用时:369ms
  • 内存:71404kb
  • [2024-03-10 13:27:06]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

#define ar array
#define ll long long
typedef int uci;
#define int long long
#define F first
#define S second
typedef complex<double> cd;

seed_seq seq{
    (uint64_t) chrono::duration_cast<chrono::nanoseconds>(chrono::high_resolution_clock::now().time_since_epoch()).count(),
    (uint64_t) __builtin_ia32_rdtsc(),
    (uint64_t) (uintptr_t) make_unique<char>().get()
};
mt19937 rng(seq);
// mt19937_64 lrng(seq);

struct debugger{
    template <typename T>
    debugger& operator<<(T &a){
        #ifdef DEBUG
            cerr << a;
        #endif
        return *this;
    }
    template <typename T>
    debugger& operator<<(T &&a){
        #ifdef DEBUG
            cerr << a;
        #endif
        return *this;
    }
} deb;

const double PI = acos(-1.0);
const int MAX_N = 1e5 + 1;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const ll LINF = 1e18;

//! function insert

//THINK FIRST, CODE SECOND
//DON'T GET STUCK ON ONE STRATEGY
//CALM DOWNNN FOR ONCE IN YOUR LIFE
//REDUCE
//COUGH E??!?!?!! O.O
//uwu i see you ryan

void solve() {
    uniform_int_distribution<int> thing(100000001, INF);
    int n, k;
    cin >> n >> k;

    const int num = 10;
    vector<int> vals{100000721,	100000793, 	100000799,	100000801,	100000837,	100000841,	100000853,	10000089, 100000921,100000937};

    vector<int> ms(num);
    vector<int> ms2(num);
    for(int j{}; j < k; ++j){
        for(int i{}; i < num; ++i){
            ms[i] *= 10;
            ms[i] += 9;
            ms[i] %= vals[i];
            ms2[i] *= 10;
            ms2[i] += 18;
            ms2[i] %= vals[i];
        }
    }
    vector<vector<int>> a(n, vector<int>(k));
    for(int i{}; i < n; ++i){
        string s;
        cin >> s;

        for(int j{};j < s.size(); ++j){
            a[i][j%k] += s[j]-'0';
        }

        for(int j{}; j < k-1; ++j){
            a[i][j+1] += a[i][j]/10;
            a[i][j] = a[i][j]%10;
        }

        while(a[i][k-1] >= 10){
            int carry = a[i][k-1]/10;
            a[i][k-1] %= 10;

            a[i][0] += carry;
            for(int j{}; j < k-1; ++j){
                if(a[i][j] < 10)
                    break;
                a[i][j+1] += a[i][j]/10;
                a[i][j] %= 10;
            }
        }
        int cnt{};
        for(int j{}; j < k; ++j){
            if(a[i][j] == 9)
                cnt++;
        }
        if(cnt == k)
            for(int j{}; j < k; ++j)
                a[i][j] = 0;
    }
    vector<ar<int, num>> c(n);
    for(int i{}; i < n; ++i){
        for(int j{}; j < k; ++j){
            for(int o{}; o < num; ++o){
                c[i][o] *= 10;
                c[i][o] += a[i][j];
                c[i][o] %= vals[o];
            }
        }
    }

    int out{};
    for(int i{}; i < n; ++i){
        for(int j = i; j < n; ++j){
            for(int k = j; k < n; ++k){
                int tot{};
                for(int o{}; o < num; ++o){
                    int v = (c[i][o]+c[j][o]+c[k][o])%vals[o];
                    if(v == 0 || v == ms[o] || v == ms2[o])
                        tot++;
                    else
                        break;
                }
                if(tot == num)
                    out++;
            }
        }
    }
    cout << out << '\n';
}

uci main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);

        // cout << "Case #" << t  << ": ";
        solve();
}

/*
    random number generator stuff
    num = rng(); gives integer number
    num = uniform_int_distribution<int>(a, b)(rng); -> bounds [a, b]
    num = uniform_real_distribution<double>(a, b)(rng); -> bounds [a, b)
    can also instantiate distributions and call on generator:
    uniform_int_distribution<int> thing(a, b);
    num = thing(rng);
*/
// struct custom_hash {
//     static uint64_t splitmix64(uint64_t x) {
//         // http://xorshift.di.unimi.it/splitmix64.c
//         x += 0x9e3779b97f4a7c15;
//         x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
//         x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
//         return x ^ (x >> 31);
//     }
//     size_t operator()(uint64_t x) const {
//         static const uint64_t FIXED_RANDOM = lrng();
//         return splitmix64(x + FIXED_RANDOM);
//     }
// };

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

4 1
0
1
10
17

output:

3

result:

ok 1 number(s): "3"

Test #2:

score: 0
Accepted
time: 74ms
memory: 7268kb

input:

500 859
7118711592236878297922359501613604144948355616986970837340677671376753603836852811886591300370143151943368529129749813118476151865844255212534355441611481420938483178075143062691345257288242460282715389758789648541099090735875617822348551942134616963557723055980260082230902505269975518146286...

output:

0

result:

ok 1 number(s): "0"

Test #3:

score: 0
Accepted
time: 369ms
memory: 71404kb

input:

500 17336
11871159223687829792235950161360414494835561698697083734067767137675360383685281188659130037014315194336852912974981311847615186584425521253435544161148142093848317807514306269134525728824246028271538975878964854109909073587561782234855194213461696355772305598026008223090250526997551814628...

output:

0

result:

ok 1 number(s): "0"

Test #4:

score: 0
Accepted
time: 163ms
memory: 3732kb

input:

500 1
751324443898124078584847834484321089092662321556147445230263526014359393841194947303407593948729802551881289193716611867931891257925091769456350249725997883453296895094445731130479434019358742162771547784250401546380268386074363779242500860317042151185119666027858022664683818314351285215150806...

output:

2327631

result:

ok 1 number(s): "2327631"

Test #5:

score: -100
Wrong Answer
time: 104ms
memory: 3728kb

input:

500 2
408542968136435277974575411503179002415404345446801430469044749372949272333801248935236224652806667129749035002588943020176263162139056819871274824302889304493205266143688886696157147111754418731401856424401766968832165255416237731963027205324149660112574729610391396555581935236134531799950318...

output:

211806

result:

wrong answer 1st numbers differ - expected: '212002', found: '211806'