結果

問題 No.353 ヘイトプラス
ユーザー しめはじめしめはじめ
提出日時 2019-07-02 15:42:50
言語 C
(gcc 12.3.0)
結果
AC  
実行時間 1 ms / 1,000 ms
コード長 1,801 bytes
コンパイル時間 237 ms
コンパイル使用メモリ 30,080 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-07-03 22:45:21
合計ジャッジ時間 808 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
6,816 KB
testcase_01 AC 1 ms
6,940 KB
testcase_02 AC 1 ms
6,944 KB
testcase_03 AC 1 ms
6,944 KB
testcase_04 AC 1 ms
6,944 KB
testcase_05 AC 1 ms
6,940 KB
testcase_06 AC 1 ms
6,940 KB
testcase_07 AC 1 ms
6,940 KB
testcase_08 AC 1 ms
6,940 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <stdlib.h>
#include <stdio.h>

int main(void){
    long a, b;
    long c;
    scanf( "%d %d", &a, &b );
    long abuf[33];
    long bbuf[33];
    long cbuf[33];
    char buf[34];
    long i = 0;
    int kuriagari = 0;
    buf[33] = '\0';

    for( i = 32; i >= 0; i--){
        abuf[32-i] = 0;
        bbuf[32-i] = 0;
        cbuf[32-i] = 0;
    }

    for( i = 32; i >= 0; i--){
        if( a == 0 ){
            break;
        }
        if( a % 2 == 0){
            abuf[32-i] = 0;
        }
        else{
            abuf[32-i] = 1;
        }
        a = a / 2;
    }

    for( i = 32; i >= 0; i--){
        if( b == 0 ){
            break;
        }
        if( b % 2 == 0){
            bbuf[32-i] = 0;
        }
        else{
            bbuf[32-i] = 1;
        }
        b = b / 2;
    }
    
    // 1と0の組み合わせで演算
    for( i = 32; i >= 0; i--){
        if( (abuf[32-i] == 0) && (bbuf[32-i] == 0) ){
            if( kuriagari == 1 ){
                cbuf[32-i] = 1;
            }else{
                cbuf[32-i] = 0;
            }
            kuriagari = 0;
        }else if( abuf[32-i] == 1 && bbuf[32-i] == 1 ){
            if( kuriagari == 1 ){
                cbuf[32-i] = 1;
            }else{
                cbuf[32-i] = 0;
            }
            kuriagari = 1;
        }else{
            if( kuriagari == 1 ){
                cbuf[32-i] = 0;
                kuriagari = 1;
            }else{
                cbuf[32-i] = 1;
                kuriagari = 0;
            }
        }
    }
    
    // 2進数文字列に
    for( i = 32; i >= 0; i--){
        if( cbuf[32-i] == 1 ){
            buf[i] = '1';
        }else{
            buf[i] = '0';
        }
    }
    // 10進数数値に
    c = strtol( buf, NULL, 2);
    printf( "%d\n", c);
    return 0;
}
0