Submission #1520989


Source Code Expand

#include "bits/stdc++.h"
using namespace std;

#define OUT(x)  cerr << #x << " = " << x << endl;
#define all(x)  x.begin(), x.end()
#define mp      make_pair
#define pii     pair<int, int>
#define piii    pair<int, pair<int, int>>

struct UnionFind {
        int n;
        vector<int> parent;
        vector<int> rank;
        vector<int> num;
        int find(int x) {
                if (parent[x] == x) return  x;
                return parent[x] = find(parent[x]);
        }
        UnionFind(int n_) {
                n = n_;
                parent.resize(n);
                for (int i = 0; i < n; i ++) parent[i] = i;
                rank.assign(n, 0);
                num.assign(n, 1);
        }
        void unite(int x, int y) {
                if ((x = find(x)) != (y = find(y))) {
                        if (rank[x] < rank[y]) {
                                parent[x] = y;
                                num[y] += num[x];
                        } else {
                                parent[y] = x;
                                if (rank[x] == rank[y]) rank[x] ++;
                                num[x] += num[y];
                        }
                        n --;
                }
        }
        bool same(int x, int y) { return find(x) == find(y); }
        int get() { return n; }
        int get(int x) { return num[find(x)]; }
};

int main() {
        int n;
        cin >> n;
        string s, t;
        cin >> s >> t;
        UnionFind uf(36);
        long long ans = 1;
        for (int i = 0; i < n; i ++) {
                if ('0' <= s[i] && s[i] <= '9' && '0' <= t[i] && t[i] <= '9') {
                        assert(s[i] == t[i]);
                } else if ('0' <= s[i] && s[i] <= '9' && 'A' <= t[i] && t[i] <= 'Z') {
                        uf.unite(s[i] - '0' + 26, t[i] - 'A');
                } else if ('A' <= s[i] && s[i] <= 'Z' && '0' <= t[i] && t[i] <= '9') {
                        uf.unite(s[i] - 'A', t[i] - '0' + 26);
                } else {
                        uf.unite(s[i] - 'A', t[i] - 'A');
                }
        }
        vector<bool> determined(26, false);
        for (int i = 0; i < n; i ++) {
                if (('0' <= s[i] && s[i] <= '9') || ('0' <= t[i] && t[i] <= '9')) continue;
                bool found_number = false;
                for (int j = 0; j <= 9; j ++) {
                        if (uf.same(s[i] - 'A', j + 26)) found_number = true;
                }
                if (found_number) continue;
                if (determined[s[i] - 'A'] || determined[t[i] - 'A']) continue;
                if (i == 0) ans *= 9;
                else ans *= 10;
                determined[s[i] - 'A'] = determined[t[i] - 'A'] = true;
        }
        cout << ans << endl;
        return 0;
}

Submission Info

Submission Time
Task B - 大事な数なのでZ回書きまLた。
User KokiYmgch
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2854 Byte
Status AC
Exec Time 1 ms
Memory 256 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 3
AC × 29
AC × 55
Set Name Test Cases
Sample subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt
Subtask1 subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask1-21.txt, subtask1-22.txt, subtask1-23.txt, subtask1-24.txt, subtask1-25.txt, subtask1-26.txt
Subtask2 subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask1-21.txt, subtask1-22.txt, subtask1-23.txt, subtask1-24.txt, subtask1-25.txt, subtask1-26.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt, subtask2-16.txt, subtask2-17.txt, subtask2-18.txt, subtask2-19.txt, subtask2-20.txt, subtask2-21.txt, subtask2-22.txt, subtask2-23.txt, subtask2-24.txt, subtask2-25.txt, subtask2-26.txt
Case Name Status Exec Time Memory
subtask0-sample01.txt AC 1 ms 256 KB
subtask0-sample02.txt AC 1 ms 256 KB
subtask0-sample03.txt AC 1 ms 256 KB
subtask1-01.txt AC 1 ms 256 KB
subtask1-02.txt AC 1 ms 256 KB
subtask1-03.txt AC 1 ms 256 KB
subtask1-04.txt AC 1 ms 256 KB
subtask1-05.txt AC 1 ms 256 KB
subtask1-06.txt AC 1 ms 256 KB
subtask1-07.txt AC 1 ms 256 KB
subtask1-08.txt AC 1 ms 256 KB
subtask1-09.txt AC 1 ms 256 KB
subtask1-10.txt AC 1 ms 256 KB
subtask1-11.txt AC 1 ms 256 KB
subtask1-12.txt AC 1 ms 256 KB
subtask1-13.txt AC 1 ms 256 KB
subtask1-14.txt AC 1 ms 256 KB
subtask1-15.txt AC 1 ms 256 KB
subtask1-16.txt AC 1 ms 256 KB
subtask1-17.txt AC 1 ms 256 KB
subtask1-18.txt AC 1 ms 256 KB
subtask1-19.txt AC 1 ms 256 KB
subtask1-20.txt AC 1 ms 256 KB
subtask1-21.txt AC 1 ms 256 KB
subtask1-22.txt AC 1 ms 256 KB
subtask1-23.txt AC 1 ms 256 KB
subtask1-24.txt AC 1 ms 256 KB
subtask1-25.txt AC 1 ms 256 KB
subtask1-26.txt AC 1 ms 256 KB
subtask2-01.txt AC 1 ms 256 KB
subtask2-02.txt AC 1 ms 256 KB
subtask2-03.txt AC 1 ms 256 KB
subtask2-04.txt AC 1 ms 256 KB
subtask2-05.txt AC 1 ms 256 KB
subtask2-06.txt AC 1 ms 256 KB
subtask2-07.txt AC 1 ms 256 KB
subtask2-08.txt AC 1 ms 256 KB
subtask2-09.txt AC 1 ms 256 KB
subtask2-10.txt AC 1 ms 256 KB
subtask2-11.txt AC 1 ms 256 KB
subtask2-12.txt AC 1 ms 256 KB
subtask2-13.txt AC 1 ms 256 KB
subtask2-14.txt AC 1 ms 256 KB
subtask2-15.txt AC 1 ms 256 KB
subtask2-16.txt AC 1 ms 256 KB
subtask2-17.txt AC 1 ms 256 KB
subtask2-18.txt AC 1 ms 256 KB
subtask2-19.txt AC 1 ms 256 KB
subtask2-20.txt AC 1 ms 256 KB
subtask2-21.txt AC 1 ms 256 KB
subtask2-22.txt AC 1 ms 256 KB
subtask2-23.txt AC 1 ms 256 KB
subtask2-24.txt AC 1 ms 256 KB
subtask2-25.txt AC 1 ms 256 KB
subtask2-26.txt AC 1 ms 256 KB