結果

問題 No.9006 マルチバイト文字テスト(テスト用)
ユーザー maimai
提出日時 2019-01-22 08:45:38
言語 C++17
(gcc 13.2.0 + boost 1.83.0)
結果
AC  
実行時間 2 ms / 5,000 ms
コード長 907 bytes
コンパイル時間 2,397 ms
コンパイル使用メモリ 201,104 KB
実行使用メモリ 4,352 KB
最終ジャッジ日時 2023-10-13 17:37:43
合計ジャッジ時間 2,687 ms
ジャッジサーバーID
(参考情報)
judge14 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
4,348 KB
testcase_01 AC 2 ms
4,352 KB
testcase_02 AC 2 ms
4,352 KB
権限があれば一括ダウンロードができます

ソースコード

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