首页 > 试题广场 >

小乐乐改数字

[编程题]小乐乐改数字
  • 热度指数:42554 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

小乐乐喜欢数字,尤其喜欢01。他现在得到了一个数,想把每位的数变成01。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。


输入描述:

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



输出描述:
输出一个整数,即小乐乐修改后得到的数字。
示例1

输入

222222

输出

0
示例2

输入

123

输出

101
import java.util.Scanner;
import java.util.Arrays;
public class Main{
    public static void main(String[]args){
        Scanner scanner = new Scanner(System.in);
        Integer integer = scanner.nextInt();
        String string = integer.toString();
        int L = string.length();
        int[] intArray = new int[L];
        //把输入的数字存入数组中(下)
        for(int i=0;i<L;i++){
            intArray[i] = string.charAt(i);
        }
        //把数组中的数字变成0或1
        for(int j=0;j<L;j++){
            if(intArray[j]%2==0){
                intArray[j]=0;
            }else{
                intArray[j]=1;
            }
        }
        //把数组变成整数
        int i=0;
        for(int l=0;l<L;l++){
            i = i*10+intArray[l]; 
        }
        System.out.print(i);  
    }
}              

编辑于 2022-08-21 22:34:42 回复(0)
//n=1时有bug,其他良好
#include<stdio.h>
int main()
{
    int n = 0;
    while (scanf("%d", &n)!=EOF)
    {
        int sum = 0;
        int ret = 1;


        while (n > ret)
        {
            ret *= 10;
        }
        ret /= 10;


        while (ret)
        {
            sum += ((n / ret) % 2) * ret;       // 权重还原
            ret /= 10;
        }
        printf("%d\n",sum);
    }
    return 0;
}

发表于 2021-11-24 22:54:10 回复(0)
#include<stdio.h>
int main()
{
    int n,a,t=-1,i=0;
    int str[50]={0};
    scanf("%d",&n);
    while(n!=0)
    {
        a=n%10;
        if(a%2==0)
            str[i]=0;
        else
            str[i]=1;
        i++;
        n/=10;
    }
    for(i=i-1;i>=0;i--)
    {
        if(str[i]!=0)
        {
            t=i;
            break;
        }
    }
    if(t==-1)
        printf("0\n");
    for(t;t>=0;t--)
    {
        printf("%d",str[t]);
    }
    printf("\n");
    return 0;
}
发表于 2021-08-12 17:56:55 回复(0)
/*求余判断每位数,累加得到目标数*/
#include<stdio.h>
#include<math.h>
int main()
{
    int n,sum=0,m;
    int a[9],i=0;
    scanf("%d",&n);
    while(n)
    {
        m=n%10;
        n/=10;
        if(m%2==0)
            a[i]=0;
        else
            a[i]=1;
        sum+=a[i]*pow(10,i);
        i++;
    }
    printf("%d",sum);
    return 0;
}


发表于 2021-03-10 11:16:45 回复(3)
#include <stdio.h>
int main()
{
	int n = 0;
	int ret = 0;
	int i = 1;
	scanf("%d", &n);
	while (n)
	{
		if ((n % 10) % 2)
			ret += i;
		i *= 10;
		n /= 10;
	}
	printf("%d", ret);
}


发表于 2021-08-08 19:49:52 回复(1)
import java.util.*;
public class Main{
    public static void main (String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int sum = 0;
        int flag = 1;
        while (n != 0) {
            if (n % 10 % 2 != 0) {
                sum += 1 * flag;
            }
            n /= 10;
            flag *= 10;
        }
        System.out.println(sum);
    }
}

发表于 2021-10-03 20:11:53 回复(1)
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int res = 0, k = 1;
    while (n)
    {
        int e = n % 10;
        if (e % 2 == 0) res += 0 * k;
        else res += 1 * k;
        n /= 10;
        k *= 10;
    }
    cout << res << endl;
}

发表于 2022-02-26 14:04:20 回复(0)
#include <math.h>
#include <stdio.h>

int main() 
{
    int n,a,b,s=0;
    double i=0;
    scanf("%d",&n);

    while(n!=0)
    {
        a=n%10;
        b=a%2;
        s+=b*pow(10,i++);
        n=n/10;
    }
    printf("%d",s);
    
    return 0;
}

发表于 2023-08-19 16:09:22 回复(2)
#include <stdio.h>

int main() {
    long long a , b = 0 ;
    scanf("%lld",&a);
    for(int d = 1;a != 0;d *= 10){
        b += a%10%2*d;
        a /= 10;
    }
    printf("%lld",b);
    return 0;
}
发表于 2023-03-21 19:04:44 回复(0)
#include<stdio.h>
int main()
{
    long long num=0,n=0,count=1;
    int i=0;
    scanf("%lld",&num);
    while(num)
    {
       i=num%10;
       if(i%2==1)
       {
           n=n+count;
           count*=10;
       }
       if(i%2==0)
       {
           count*=10;
       }
        num/=10;
    }
    printf("%lld",n);
    
}

发表于 2021-12-14 01:19:57 回复(0)
#include <stdio.h>
#include <math.h>

int main(){
	long long n,sum=0,c;
    int a[10],i,k=0;
	scanf("%d", &n);
    while(n)
    {
        c=n%10;
        n /=10;
        a[k++] = c;
    }//获取各位的数据
	for(i=0;i<k;i++)
    {
        if(a[i]%2 == 0)
        {
            a[i] = 0;
        }
        else
            a[i] = 1;//对各位奇偶进行判断
        sum += a[i]*pow(10,i);//还原数字位数
    }
    printf("%lld",sum);
	return 0;
}

发表于 2021-09-08 21:58:17 回复(0)
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int n;
    cin >> n;
    string s = to_string(n);
    
    for (int i = 0; i < s.size(); ++i)
    {
        if (s[i] % 2 == 0)
            s[i] = '0';
        else
            s[i] = '1';
    }
    
    cout << stoi(s) << endl;
    return 0;
}

编辑于 2020-03-28 11:16:31 回复(1)
#include <stdio.h>
#include <math.h>
int main()
{
    //输入
    int input = 0;
    scanf("%d",&input);
    //i为次方,123%10得到3,123/10得到12
    //这样循环,最后1/10得到0就跳出循环
    //101(123)写为100+0+1
    //得到1*10^2(百位1,奇数为1,100)+0*10^1(十位2,偶数为0,0)+1*10^0(个位3,奇数为1,1)
    int sum = 0;
    int i = 0;
    while(input)
    {
        //x来记录每次循环%得到的数,第一次为123%10=3,第二次为12%10=2,第三次1%10=1
        int x = input % 10;
        if(input%2==1)//奇数
        {
            sum += 1*pow(10,i);
            i++;
        }
        else//偶数
        {
            sum += 0*pow(10,i);
            i++;
        }
        input/=10;
    }
    printf("%d ",sum);
    return 0; 
}

发表于 2023-06-03 19:08:07 回复(0)
num = str(input())
nn = ""
for i in num:
    if int(i)%2 == 0:
        nn += str(0)
    else:
        nn += str(1)
print(int(nn))
发表于 2023-04-12 15:23:35 回复(0)
#include <stdio.h>
int main() {
    int a, b = 1, sum = 0;
    scanf("%d", &a);
    while (a / b != 0) {
        sum += (a % (10 * b) / b) % 2 * b;
        b *= 10;
    }
    printf("%d\n", sum);
    return 0;
}

发表于 2023-04-05 23:11:42 回复(0)
int main()
{
    //输入整数
    int a = 0;
    scanf("%d", &a);

    int save = 0;//存放输出的数字
    int i = 0;

    //判断奇偶及修改
    for ( ; a > 0; i++, a /= 10)
    {
        //末位数为奇数
        if (a % 2 == 1)
        {
            save += 1 * pow(10, i);//只加10的倍数得到最终结果
        }
        //末位数为偶数则跳过,进入下一次循环
    }

    //输出
    printf("%d", save);
    return 0;
}

发表于 2022-10-22 14:08:11 回复(0)
发表于 2022-01-27 11:33:59 回复(0)
#include<stdio.h>
int main(){
    int n,t=0;
    int a[100];
    int sum=0;
    scanf("%d",&n);
    while(n!=0){
        if(n%10%2==0){
            a[t]=0;
        }
        else{
            a[t]=1;
        }
        t++;
        n=n/10;
    }
    for(int i=t-1;i>=0;i--){
        printf("%d",a[t]);
    }
   
}求求这样为什么不可以啊 得到一个数组逆向输出为什么过不去
发表于 2021-10-10 13:31:36 回复(1)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        String str=String.valueOf(n);
        StringBuilder stringBuilder=new StringBuilder();
        for(int i=0;i<str.length();i++){
            int m=Integer.parseInt(String.valueOf(str.charAt(i)))%2;
            stringBuilder.append(m);
        }
        str=stringBuilder.toString();
        System.out.println(Integer.parseInt(str));
    }
}
发表于 2020-09-25 22:13:33 回复(0)
先变为01串再讨论,首字符必须是1开始,否则输出0
#include <stdio.h>
int main()
{
    int a[11];
    int n;
    scanf("%d",&n);
    int t=0;
    int flag=0;
    while(n){
        if(n%2==1){
            a[t++]=1;
        }else{
            a[t++]=0;
        }
        n/=10;
    }
    int i;
    for(i=t-1;i>=0;i--){
        if(a[i]!=0){
            flag=1;
            printf("%d",a[i]);
        }else if(flag){
            printf("%d",a[i]);
        }
    }
    if(!flag) printf("0\n");
}

发表于 2020-04-10 15:33:44 回复(0)