結果
| 問題 |
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;
}
しめはじめ