Submission #1369085


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 = 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 (i != 0 && '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 0
Code Size 2462 Byte
Status CE

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:18:26: error: ‘ll’ was not declared in this scope
 #define FOR(i,bg,ed) for(ll i=(bg);i<(ed);i++)
                          ^
./Main.cpp:19:18: note: in expansion of macro ‘FOR’
 #define REP(i,n) FOR(i,0,n)
                  ^
./Main.cpp:37:5: note: in expansion of macro ‘REP’
     REP(i,26) alpha2num[i] = '-';
     ^
./Main.cpp:37:9: error: ‘i’ was not declared in this scope
     REP(i,26) alpha2num[i] = '-';
         ^
./Main.cpp:18:36: note: in definition of macro ‘FOR’
 #define FOR(i,bg,ed) for(ll i=(bg);i<(ed);i++)
                                    ^
./Main.cpp:37:5: note: in expansion of macro ‘REP’
     REP(i,26) alpha2num[i] = '-';
     ^
./Main.cpp:18:26: error: ‘ll’ was not declared in this scope
 #define FOR(i,bg,ed) for(ll i=(bg);i<(ed);i++)
                          ^
./Main.cpp:19:18: note: in expansion of macro ‘FOR’
 #define REP(i,n) FOR(i,0,n)
                  ^
./Main.cpp:44:9: note: in expansion of macro ‘REP’
         REP(i,N) {
...