結果
| 問題 |
No.822 Bitwise AND
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-04-26 22:12:06 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,459 bytes |
| コンパイル時間 | 959 ms |
| コンパイル使用メモリ | 86,600 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-25 04:20:49 |
| 合計ジャッジ時間 | 1,398 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 6 WA * 11 |
ソースコード
#include <iostream>
#include <string>
#include <utility>
#include <algorithm>
#include <map>
#include <set>
#include <vector>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <iomanip>
using namespace std;
#define REP(i, n) for(ll i = 0;i < n;i++)
#define REPR(i, n) for(ll i = n;i >= 0;i--)
#define FOR(i, m, n) for(ll i = m;i < n;i++)
#define FORR(i, m, n) for(ll i = m;i >= n;i--)
#define REPO(i, n) for(ll i = 1;i <= n;i++)
#define ll long long
#define INF (ll)1 << 60
#define MINF (-1 * INF)
#define ALL(n) n.begin(),n.end()
#define MOD 1000000007
#define P pair<ll, ll>
ll s[30];
ll n, m, now, ans, mx;
vector<ll> list, l2;
int main() {
cin >> n >> m;
ll nn = n;
if (n == 0) {
if (m > 0) {
cout << "INF" << endl;
return 0;
}
}
while (n > 0) {
if (n % 2 == 1) {
s[now] = 1;
mx = now;
}
now++;
n /= 2;
}
if (1 + n <= m) {
cout << "INF" << endl;
return 0;
}
REP(i, 11) {
if (s[i] == 0)list.push_back(pow(2, i));
if (s[i] == 0)l2.push_back(pow(2, i));
}
REP(i, 1ll << (ll)list.size()) {
REP(k, 1ll << (ll)l2.size()) {
if (i < k)break;
bool ok = true;
REP(j, l2.size()) {
if (i & (1ll << j) and k & (1ll << j))ok = false;
}
if (!ok)break;
ll s1 = 0, s2 = 0;
REP(j, list.size()) {
if (i & (1ll << j))s1 += list[j];
}
REP(j, l2.size()) {
if (k & (1ll << j))s2 += l2[j];
}
if (m >= abs(s1 - s2))ans++;
}
}
cout << ans << endl;
}