結果

問題 No.2201 p@$$w0rd
ユーザー YugimnYugimn
提出日時 2023-09-08 11:44:39
言語 C++23
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 3 ms / 2,000 ms
コード長 1,364 bytes
コンパイル時間 4,216 ms
コンパイル使用メモリ 278,640 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-06-26 05:00:50
合計ジャッジ時間 4,937 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
6,812 KB
testcase_01 AC 2 ms
6,944 KB
testcase_02 AC 2 ms
6,940 KB
testcase_03 AC 2 ms
6,940 KB
testcase_04 AC 2 ms
6,940 KB
testcase_05 AC 2 ms
6,944 KB
testcase_06 AC 2 ms
6,944 KB
testcase_07 AC 2 ms
6,944 KB
testcase_08 AC 2 ms
6,940 KB
testcase_09 AC 2 ms
6,940 KB
testcase_10 AC 2 ms
6,940 KB
testcase_11 AC 2 ms
6,944 KB
testcase_12 AC 2 ms
6,940 KB
testcase_13 AC 2 ms
6,944 KB
testcase_14 AC 3 ms
6,944 KB
testcase_15 AC 2 ms
6,944 KB
testcase_16 AC 2 ms
6,944 KB
testcase_17 AC 2 ms
6,940 KB
testcase_18 AC 2 ms
6,944 KB
testcase_19 AC 2 ms
6,940 KB
testcase_20 AC 2 ms
6,944 KB
testcase_21 AC 2 ms
6,940 KB
testcase_22 AC 2 ms
6,944 KB
testcase_23 AC 2 ms
6,944 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

//Normal-2

#define _GLIBCXX_DEBUG
#define ll long long
#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;

void p(auto a){
  cout << a;
}

void ps(auto a){
  cout << a << " ";
}

void ps(){
  cout << " ";
}

void pl(auto a){
  cout << a << endl;
}

void pl(){
  cout << endl;
}

void fix15(){
  cout << fixed << setprecision(15);
}

void YES(){
  pl("YES");
}

void NO(){
  pl("NO");
}

void Yes(){
  pl("Yes");
}

void No(){
  pl("No");
}

void yes(){
  pl("yes");
}

void no(){
  pl("no");
}

string change(string S, int i){
  if(S[i] == 'l') S[i] = '1';
  if(S[i] == 'o') S[i] = '0';
  if(S[i] == 'a') S[i] = '@';
  if(S[i] == 's') S[i] = '$';

  return S;
}

bool checker(string S){
  bool flag1, flag2, flag3;
  flag1 = flag2 = flag3 = false;

  for(int i = 0; i < 8; i++){
    int c = -1;

    if('a' <= S[i] and S[i] <= 'z') c = 1;
    else if('0' <= S[i] and S[i] <= '9') c = 2;
    else c = 3;

    if(c == 1) flag1 = true;
    if(c == 2) flag2 = true;
    if(c == 3) flag3 = true;
  }

  if(flag1 and flag2 and flag3) return true;
  return false;
}

//Normal-2
int main(){
  string SS; cin >> SS;

  map<string, int> mp;
  for(int i = 0; i < 256; i++){
    bitset<8> bt(i);
    string S = SS;

    for(int j = 0; j < 8; j++){
      if(bt[j]) S = change(S, j);
    }

    if(checker(S)) mp[S]++;
  }

  pl((int)mp.size());
}
0