4 solutions

  • 0
    @ 2025-1-6 13:50:32

    @正负加 的代码,加了注释

    #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
      @ 2024-12-8 20:31:48
      #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
        @ 2024-12-8 20:31:21
        #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
          @ 2024-12-8 20:32:37
          // <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