牛客网刷题 | BC45 小乐乐改数字

题目描述

小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。

如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。

请在这里输入引用内容

输入描述:

输入包含一个整数n (0 ≤ n ≤ 109)

请在这里输入引用内容

输出描述:

输出一个整数,即小乐乐修改后得到的数字。

解题思路:

将输入读取为字符串,判断如果是偶数则为0,奇数为1,最后输出,但是要判断第一个1出现的位置。 

首先进行取模运算,判断最后一个数字是否为奇数或者偶数

是偶数或者奇数 将它替换成0或者1

其实这个没有替换数字,只是它符合基数的时候返回了1,给出了一种替换数字的错觉。


 

# include <stdio.h>
int mod(unsigned int n)
{
    //如果n大于9,也就是说n至少是两位数
    if (n>9)
    {   
        //递归处理n的每一位。举例:123会被拆分为12和3,分别处理
        return 10 * mod(n/10)+mod(n%10);
    }
    else
    {
        // 如果n除以2的余数是1,即n是奇数
        if(n%2==1)
        {
            return 1;
        }
        //否则 n 是偶数
        else 
        {
            return 0;
        }
        
    }

}
int main ()
{
    int m = 0;
    scanf("%u",&m);
    printf("%u",mod(m));

    return 0;
}

官方代码:

#include<iostream>
#include<string>

using namespace std;

int main()
{
    char c[10] = {};//将数字读为字符char
    cin >> c;
    int n = strlen(c);//长度
    for (int i = 0; i < n; i++)
    {
        if (c[i] % 2 == 0)//偶数为0
            c[i] = '0';
        else 
            c[i] = '1';奇数为1
    }
    int f = 0;            //做标记,找出第一个1的位置
    for (int i = 0; i < n; i++)
    {
        if (c[i] != '0')
            ++f;//不等于0就继续向前
        if (f == 0)
            continue ;
        cout << c[i];
    }
    
    if (f == 0)            //输出一个零,或者非零后的所有数字
        cout << '0' << endl;

    cout << endl;
}

Hello,各位读者朋友们你们好,欢迎来到 从0至1 的CSDN博客。

一个喜欢文学的理科男,欢迎大家关注我的矩阵平台!

欢迎关注我的短视频矩阵:

微信公众平台:从0至1

今日头条:从0至1

百家号(百度APP):小飞从0至1

抖音:从0至1

小红书:从0至1

知乎:从0至1

CSDN:https://blog.csdn.net/m0_64000959?spm=1000.2115.3001.5343

Gitee:https://gitee.com/from-0-to-1

后续继续更新......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值