結果
問題 |
No.3276 Make Smaller Popcount
|
ユーザー |
![]() |
提出日時 | 2025-09-19 21:42:15 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,547 bytes |
コンパイル時間 | 3,467 ms |
コンパイル使用メモリ | 187,560 KB |
実行使用メモリ | 7,720 KB |
最終ジャッジ日時 | 2025-09-19 21:42:32 |
合計ジャッジ時間 | 16,468 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 5 WA * 23 |
ソースコード
#include <iostream> #include <vector> #include <bitset> #include <algorithm> #include <cmath> #include <atcoder/all> using namespace std; using namespace atcoder; using ll = long long; using mint = modint998244353; using vi = vector<int>; using vvi = vector<vi>; using vvvi = vector<vvi>; using vll = vector<ll>; using vvll = vector<vll>; using vvvll = vector<vvll>; using vmi = vector<mint>; using vvmi = vector<vmi>; using vvvmi = vector<vvmi>; #define all(a) (a).begin(), (a).end() #define rep2(i, m, n) for (int i = (m); i < (n); ++i) #define rep(i, n) rep2(i, 0, n) #define drep2(i, m, n) for (int i = (m)-1; i >= (n); --i) #define drep(i, n) drep2(i, n, 0) int main(){ int t; cin >> t; while(t--){ int n; cin >> n; bitset<32> bs(n); if(bs.count() == 1){ cout << -1 << endl; continue; } bool f = false; rep(i, 31){ if(bs[i] && bs[i+1]){ bitset<32> ans(0); rep(j, 32)ans[j] = (j == i) ? 1 : 0; cout << ans.to_ulong() << endl; f = true; break; } if(f)break; } if(f)continue; int c = 0; rep(i, 32){ if(bs[i]){ c++; } if(c == 2){ bitset<32> ans(0); ans[i+1] = 1; rep2(j, i+2, 32)ans[j] = bs[j]; cout << ans.to_ulong() - n << endl; break; } } } return 0; }