結果
| 問題 | No.353 ヘイトプラス | 
| コンテスト | |
| ユーザー |  しめはじめ | 
| 提出日時 | 2019-07-02 15:42:50 | 
| 言語 | C (gcc 13.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 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 7 | 
ソースコード
#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;
}
            
            
            
        