結果
問題 | No.3057 A xor B = C |
ユーザー | mannshi222jp |
提出日時 | 2022-02-11 15:20:32 |
言語 | C (gcc 12.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 5,876 bytes |
コンパイル時間 | 1,702 ms |
コンパイル使用メモリ | 30,848 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-27 09:34:15 |
合計ジャッジ時間 | 2,136 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | WA | - |
testcase_01 | WA | - |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | WA | - |
ソースコード
#include <stdio.h> #include <stdbool.h> #include <string.h> int divide( char *s ); bool zero( char *s ); int main() { char a[10000]; char b[10000]; char tmp[10000]; char ttmp[10000]; int la, lb; int ad, bd; int t, tt; int len; scanf( "%s\n", a ); scanf( "%s\n", b ); // 桁そろえ la = strlen( a ); lb = strlen( b ); if( la > lb ) { for( int i = 0; i < la - lb; i++ ) { tmp[i] = '0'; } tmp[la-lb] = '\0'; strcat( tmp, b ); strcpy( b, tmp ); } else if( la < lb ) { for( int i = 0; i < lb - la; i++ ) { tmp[i] = '0'; } tmp[lb-la] = '\0'; strcat( tmp, a ); strcpy( a, tmp ); } /* printf("<%s>\n", a); printf("<%s>\n", b); fflush(stdout); /**/ len = strlen( a ); while( !zero( a ) || !zero( b ) ) { la = strlen( a ); ad = ( a[la -1] - '0' ) % 2; bd = ( b[la -1] - '0' ) % 2; if( ad == bd ) { tmp[t++] = '0'; } else { tmp[t++] = '1'; } divide( a ); divide( b ); } tmp [t] = '\0'; // reverse tt = 0; t--; do { ttmp[tt++] = tmp[t--]; } while( t >= 0 ); ttmp[tt] = '\0'; if( zero( ttmp ) ) { printf( "0\n" ); return 0; } tt = 0; while( ttmp[tt++] == '0' ) ; strcpy( tmp, ttmp+tt-1 ); printf("%s\n", tmp ); return 0; } int divide( char *s ) { char tmp[100000]; int t = 0; bool crr; crr = false; for( int i = 0; s[i] != '\0'; i++ ) { if( crr == false ) { switch( s[i] ) { case '0': tmp[t++] = '0'; crr = false; break; case '2': tmp[t++] = '1'; crr = false; break; case '4': tmp[t++] = '2'; crr = false; break; case '6': tmp[t++] = '3'; crr = false; break; case '8': tmp[t++] = '4'; crr = false; break; case '1': tmp[t++] = '0'; crr = true; break; case '3': tmp[t++] = '1'; crr = true; break; case '5': tmp[t++] = '2'; crr = true; break; case '7': tmp[t++] = '3'; crr = true; break; case '9': tmp[t++] = '4'; crr = true; break; } } else { // crr == true switch( s[i] ) { case '0': tmp[t++] = '5'; crr = false; break; case '2': tmp[t++] = '6'; crr = false; break; case '4': tmp[t++] = '7'; crr = false; break; case '6': tmp[t++] = '8'; crr = false; break; case '8': tmp[t++] = '9'; crr = false; break; case '1': tmp[t++] = '5'; crr = true; break; case '3': tmp[t++] = '6'; crr = true; break; case '5': tmp[t++] = '7'; crr = true; break; case '7': tmp[t++] = '8'; crr = true; break; case '9': tmp[t++] = '9'; crr = true; break; } } } tmp[t] = '\0'; strcpy( s, tmp ); return 0; } bool zero( char *s ) { while( *s == '0' ) { s++; } if( *s == '\0' ) { return true; } else { return false; } }