6 条题解

  • 0
    @ 2025-10-29 20:17:44
    #include <stdio.h>
    int main(){
        int n,m,cnt=0;
        scanf("%d",&n);
        while(n--){
            scanf("%d",&m);
            while(m>0){
                if(m%2==1){cnt++;m=m/2;}
                else m=m/2;
            }
            printf("%d\n",cnt);
            cnt=0;
        }
    }
    
    • 0
      @ 2025-10-4 16:38:06

      #include<stdio.h>

      int main(){

      int n,m,t;

      scanf("%d",&n);

      while(n--){

      scanf("%d",&m);//输入一个数m

      int x=0;

      while(m!=0){//m不等于0就除2,余就是二进制的一位

      t=m%2;

      m=m/2;

      if(t==1){

      x++;//记录1的数量

      }

      }

      printf("%d\n",x);

      }

      return 0;

      }

      • 0
        @ 2025-9-13 23:38:55
        from math import sqrt,ceil,gcd,log;re=lambda:map(int,input().strip().split())
        for _ in range(int(input())):
            n = int(input())
            print(n.bit_count())
        

        c++(gnu gcc/g++)里面应该可以用__builtin_popcount

        • 0
          @ 2024-12-18 17:28:53
          #include<bits/stdc++.h>
          using namespace std;
          
          int main()
          {
          	int t,sum;
          	cin>>t;
          	int n;
          	while(t--)
          	{
          		cin>>n;
          		sum = 0;
          		while(n>0)
          		{
          			if(n&1)
          			{
          				sum++;
          			}
          			n >>= 1;
          		}
          		cout<<sum<<endl;
          	}
          }
          
          • 0
            @ 2023-9-17 23:44:33
            #include <stdio.h>
            // 函数用于计算一个整数中1的个数
            int fun(int num) 
            {
                int count = 0;
                while (num) 
            	{
                    count += num & 1; // 检查最低位是否为1
                    num >>= 1;       // 二进制结果右移一位,继续检查下一位
                }
                return count;
            }
            
            int main() 
            {
            	int n;
            	scanf("%d",&n);
                int num[n];
                for(int i=0;i<n;i++) 
            	{
                    scanf("%d", &num[i]);
             printf("%d\n",fun(num[i])}
                return 0;
            }
            

            函数算法详细点此处

            • 0
              @ 2023-9-4 22:21:42

              #include<stdio.h> int main() { int n=0,N,M; scanf("%d",&N); if(N<=1&&N>=1000){return 0;} while(N--) { scanf("%d",&M); if(M<0&&M>10000){return 0;} int count=0; while(M) { M=((M-1)&M); count++; } printf("%d\n",count); } return 0; }

              • 1

              信息

              ID
              163
              时间
              3000ms
              内存
              128MiB
              难度
              4
              标签
              (无)
              递交数
              636
              已通过
              313
              上传者