题解 | 牛牛的10类人

牛牛的10类人

https://www.nowcoder.com/practice/232b7fc32fac4636819e31a7d7c960a3

//本来是想用递归求解的,但是存在范围溢出问题
#include <stdio.h>         //标准输入输出函数头文件
int main()
{
    int n;         //定义整型变量,表示用户想要输入的数字个数
    //输入
    scanf("%d",&n);
    int a[n];          //定义整型数组,保存用户输入的数字
    //输入
    for(int i=0;i<n;i++)
    {
        scanf("%d ",&a[i]);
    }
    //利用for循环判断
    for(int i=0;i<n;i++)
    {
        //首先对特殊情况进行判断,当a[i]为0时无法进入while循环
        if(a[i]==0)
        {
            printf("100 ");
        }
        int sum1 = 0,sum0 = 0;       //定义整型变量,表示二进制中1和0的个数
        //利用while循环求出二进制的每一位并记录0和1的个数
        while(a[i])
        {
            int s=a[i]%2; 
            a[i]=a[i]/2;
            if(s==0)
            {
               sum0++;
            }
            else if(s==1)
            {
               sum1++;
            }
        }
        //利用if语句进行判断
        if(sum1%2==0&&sum0%2==0)
        {
           printf("10 ");
        }
        else if(sum1%2==0)
        {
            printf("1 ");
        }
        else if(sum0%2==0)
        {
            printf("0 ");
        }
        else 
        {
            printf("100 ");
        }
    }
    return 0;
}

全部评论

相关推荐

03-16 12:39
燕山大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务