結果

問題 No.9006 マルチバイト文字テスト(テスト用)
ユーザー mai
提出日時 2019-01-22 08:45:38
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 2 ms / 5,000 ms
コード長 907 bytes
コンパイル時間 1,748 ms
コンパイル使用メモリ 196,072 KB
最終ジャッジ日時 2025-01-06 20:33:47
ジャッジサーバーID
(参考情報)
judge5 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
#define mygc (uint32_t)getchar_unlocked
#define mypc putchar_unlocked

vector<uint32_t> vec;
int main() {
    uint32_t c;
    while ((c = mygc()) != '\n'){
        if (!(0x80u & c)) {
            vec.push_back(c);
        }
        else if ((0xE0u & c) == 0xC0u) {
            vec.push_back((mygc() << 8) | c);
        }
        else if ((0xF0u & c) == 0xE0u) {
            uint32_t c1 = mygc();
            vec.push_back((mygc() << 16) | (c1 << 8) | c);
        }
        else if ((0xF8u & c) == 0xF0u) {
            uint32_t c1 = mygc();
            uint32_t c2 = mygc();
            vec.push_back((mygc() << 24) | (c2 << 16) | (c1 << 8) | c);
        }
        else break;
    }
    reverse(vec.begin(), vec.end());
    for (uint32_t u : vec){
        while (u){
            mypc(u&0xFFu);
            u >>= 8;
        }
    }
    mypc('\n');
    return 0;
}
0