题解 | #小乐乐改数字#

小乐乐改数字

https://www.nowcoder.com/practice/fcd30aac9c4f4028b23919a0c649824d

本题最主要就是要把情况全部考虑清楚了
1. 首先就是全为偶数的情况下  --  只输出一个0
2. 首位为偶数,前几位全为偶数,但之中会有奇数  --  前几位不输出,直到奇数再输出(如: 222121 ;输出:101)
3. 首位为奇数,就是正常我们所能想到的情况了
#include <stdio.h>
int main()
{
    int x = 0;
    scanf("%d",&x);
    int q = 1;
    int arr[10] = {0};
    int y = x;
    int cnt = 1;
    //分解各个数字放入数组
    while(y > 9)
    {
        y /= 10;
        q *= 10;
        cnt++;
    }
    int i = 0;
    while(i < cnt)
    {
        arr[i] = x / q;
        x %= q;
        q /= 10;
        i++;
    }
    
    //判断其是否全为2
    int f = 0;
    for(i = 1;i < cnt;i++)
    {
        if(arr[i] != arr[i - 1])
        {
            f = 1;
            break;
        }
    }
    if(f == 0)
    {
        if(arr[0] % 2 == 0)
        {
            printf("0");
        }
    }
    //开始考虑其他情况
    //即不能让0在首位
    // 222222  --  0
    // 111111  --  111111
    // 222221  --  1
    // 222121  --  101
    else if(f == 1)
    {
        //先判断第一位数是否为偶数
        //如果是的话,就要进行第二位是否是偶数
        //依此类推
        //此时用j来判断前面有几位0
        int j = 0;
        while(arr[j] % 2 == 0)
        {
            j++;
        }

        //然后直接用i = j开始输出1 或者 0
        for(i = j;i < cnt;i++)
        {
            if(arr[i] % 2 == 0)
            {
                printf("0");
            }
            else if(arr[i] % 2 != 0)
            { 
                printf("1");
            }
        }
    }

    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 12:02
ssob上原来真有BOSS啊
硫蛋蛋:这种也是打工的,只不是是给写字楼房东打工
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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