Submission #1369071


Source Code Expand

#include <fstream>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <cstring>
#include <climits>
#include <set>

//#define int long long
typedef long long ll;
//using ll = long long;
//using R = double;

//#define rep(i,n) for(int i=0; i<(n); i++)
#define FOR(i,bg,ed) for(ll i=(bg);i<(ed);i++)
#define REP(i,n) FOR(i,0,n)

#define MOD 1000000007

const int INF = int(1e9);

using namespace std;

typedef vector<int> V;
typedef vector<V> VV;

signed main()
{
    int N;
    string s1, s2;
    char alpha2num[26];
    map<char, char> alpha2alpha;

    REP(i,26) alpha2num[i] = '-';
    for (char c='A'; c<='Z'; c++) alpha2alpha[c] = c;

    cin >> N >> s1 >> s2;
    bool update = true;
    while (update) {
        update= false;
        REP(i,N) {
            if ('A' <= s1[i] && s1[i] <= 'Z' && '0' <= s2[i] && s2[i] <= '9') {
                alpha2num[s1[i]-'A'] = s2[i];
                s1[i] = s2[i];
                update = true;
            } else if ('A' <= s2[i] && s2[i] <= 'Z' && '0' <= s1[i] && s1[i] <= '9') {
                alpha2num[s2[i]-'A'] = s1[i];
                s2[i] = s1[i];
                update = true;
            } else if ('A' <= s1[i] && s1[i] <= 'Z' && alpha2num[s1[i]-'A'] != '-') {
                s1[i] = alpha2num[s1[i]-'A'];
                update = true;
            } else if ('A' <= s2[i] && s2[i] <= 'Z' && alpha2num[s2[i]-'A'] != '-') {
                s2[i] = alpha2num[s2[i]-'A'];
                update = true;
            }
        }
    }

    REP(i,N) {
        if ('A' <= s1[i] && s1[i] <= 'Z' && 'A' <= s2[i] && s2[i] <= 'Z' && s1[i] != s2[i]) {
            alpha2alpha[min(s1[i], s2[i])] = max(s1[i], s2[i]);
        }
    }

    REP(i,N) {
        if ('A' <= s1[i] && s1[i] <= 'Z') {
            while (alpha2alpha[s1[i]] != s1[i]) {
                s1[i] = alpha2alpha[s1[i]];
            }
        }
    }

    /*
    cout << s1 << endl;
    cout << s2 << endl;
    */

    int ans = 1;
    bool used[26] = {false};
    REP(i,N) {
        if (i == 0 && 'A' <= s1[i] && s1[i] <= 'Z') {
            ans *= 9;
            used[s1[i]-'A'] = true;
        }
        if ('A' <= s1[i] && s1[i] <= 'Z' && !used[s1[i]-'A']) {
            ans *= 10;
            used[s1[i]-'A'] = true;
        }
    }

    cout << ans << endl;

    return 0;
}

Submission Info

Submission Time
Task B - 大事な数なのでZ回書きまLた。
User hiyokko2
Language C++14 (GCC 5.4.1)
Score 30
Code Size 2457 Byte
Status WA
Exec Time 2 ms
Memory 384 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 0 / 70
Status
AC × 3
AC × 29
AC × 54
WA × 1
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 2 ms 384 KB
subtask2-25.txt AC 1 ms 256 KB
subtask2-26.txt WA 1 ms 256 KB