結果
| 問題 | No.683 Two Operations No.3 | 
| コンテスト | |
| ユーザー |  bal4u | 
| 提出日時 | 2019-07-15 11:03:45 | 
| 言語 | C (gcc 13.3.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 1 ms / 2,000 ms | 
| コード長 | 565 bytes | 
| コンパイル時間 | 200 ms | 
| コンパイル使用メモリ | 30,080 KB | 
| 実行使用メモリ | 6,820 KB | 
| 最終ジャッジ日時 | 2024-11-26 10:20:55 | 
| 合計ジャッジ時間 | 943 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 16 | 
ソースコード
// yukicoder: No.683 Two Operations No.3
// 2019.7.15 bal4u
#include <stdio.h>
typedef long long ll;
typedef struct { ll x, y; } Q;
Q q[100000]; int top, end;
int main()
{
	ll x, y;
	scanf("%lld%lld", &x, &y);
	q[0].x = x, q[0].y = y, end = 1;
	while (top != end) {
		x = q[top].x, y = q[top++].y;
		if (x == 0 || y == 0) { puts("Yes"); return 0; }
		if (x < 0 || y < 0) continue; 
		if ((x & 1) && (y & 1)) continue; 
		if ((y & 1) == 0) q[end].x = x-1, q[end++].y = y >> 1;
		if ((x & 1) == 0) q[end].x = x >> 1, q[end++].y = y-1;
	}
	puts("No");
	return 0;
}
            
            
            
        