4 solutions
-
0
@正负加 的代码,加了注释
#include <bits/stdc++.h> #define lowbit(n) ((n) & (-(n))) // 带参数宏定义,它是简单的语句替换,要多打括号 using namespace std; // ↓代表要买的水瓶个数 int n, k, ans; int main() { cin >> n >> k; // _builtin_popcount(n)代表已经有的水瓶数,即二进制n为1的个数 while (__builtin_popcount(n) > k) ans += lowbit(n), n += lowbit(n); //lowbit(n)代表要新买多少个瓶子,即一个二进制数一位为1的最低位置 cout << ans; return 0; }
-
0
#include <bits/stdc++.h> using namespace std; //与运算遵循特定规则: //两个数值同时为1时, //结果才为1;否则,结果为0。 //例如,0与0的与运算结果为0 //,0与1的与运算结果同样为0 //,1与0的与运算结果依然为0 //,而1与1的与运算结果则为1 //。按位与运算是一种二目运算 //符,其功能在于参与运算的两 //个数值对应的二进位进行相与 //操作。只有当两个二进位均为 //1时,结果位才为1。 long long n, k, num, ans = 0; int main() { cin >> n >> k; while(1) { int count = 0; for(int i = 0;i < 64;i++) { if((n&((long long)1<<i))>0) { count++; } } if(count<=k) { cout << num; break; } else { num+=n&-n; n+=n&-n; } } return 0; }
-
0
#include <bits/stdc++.h> using namespace std; int n, k, ans; //__builtin_popcount( ) //int popcount(int x) //{ // int res = 0; // while(x) // { // if(x%2) // { // res++; // } // x/=2; // } // return res; //} int main() { cin >> n >> k; while(__builtin_popcount(n) > k) { ans += n&-n; n += n&-n; // cout << (n&-n) << endl; // cout << ans << endl; // cout << __builtin_popcount(n) << endl; // cout << n << endl; } cout << ans; return 0; }
-
-1
// <algorithm> -*- C++ -*- // Copyright (C) 2001-2014 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the // Free Software Foundation; either version 3, or (at your option) // any later version. // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // Under Section 7 of GPL version 3, you are granted additional // permissions described in the GCC Runtime Library Exception, version // 3.1, as published by the Free Software Foundation. // You should have received a copy of the GNU General Public License and // a copy of the GCC Runtime Library Exception along with this program; // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // <http://www.gnu.org/licenses/>. /* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Hewlett-Packard Company makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * * Copyright (c) 1996,1997 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Silicon Graphics makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. */ /** @file include/algorithm * This is a Standard C++ Library header. */ #ifndef _GLIBCXX_ALGORITHM #define _GLIBCXX_ALGORITHM 1 #pragma GCC system_header #include <utility> // UK-300. #include <bits/stl_algobase.h> #include <bits/stl_algo.h> #ifdef _GLIBCXX_PARALLEL # include <parallel/algorithm> #endif #endif /* _GLIBCXX_ALGORITHM */
- 1
Information
- ID
- 951
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 6
- Tags
- (None)
- # Submissions
- 47
- Accepted
- 16
- Uploaded By