cqm解题报告02

来源:互联网 发布:网络专业书籍 编辑:程序博客网 时间:2024/05/05 05:12

又是一道签到题。。只能做签到题,唉。位运算判断每一位上是否为1,int范围,for到32就可以了。

#include<stdio.h>#include<iostream>using namespace std;int n;int main(){    int t;    scanf("%d",&t);    while(t--){        scanf("%d",&n);        int res = 0;        for (int i = 0,j=1; i < 32; i++)        {            if ( n & j )                res ++ ;            j<<=1;        }        printf("%d\n",res);    }    return 0;}

赛后学会了一种黑科技。。计算__builtin_popcount()计算int范围内有多少个位为1

#include<cstdio>#include<cstdlib>#include<cctype>#include<cstring>#include<cmath>#include<ctime>#include<iostream>#include<algorithm>#include<set>#include<vector>#include<queue>#include<stack>using namespace std;const int M =1e6+5,INF=0x3f3f3f3f;int main(){    int T;    scanf("%d",&T);    while(T--){        int n;        scanf("%d",&n);        printf("%d\n",__builtin_popcount(n));    }    return 0;}
0 0
原创粉丝点击