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

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


输入描述:

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



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

输入

222222

输出

0
示例2

输入

123

输出

101
#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 回复(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 回复(0)
#include <stdio.h>
#include <string.h>
#define N 11

int main(void)
{
    int i;
    char temp[N];
    int count = 0;
    long int number = 0L;
    
    scanf("%10s", temp);
    for (i = 0; i < strlen(temp); i++)
    {
        if (0 == (temp[i] - '0') % 2)
        {
            temp[i] = '0';
        }
        else
        {
            temp[i] = '1';
        }
    }
    for (i = 0; i < strlen(temp); i++)
    {
        number = number * 10 + (temp[i] - '0');
    }
    printf("%ld\n", number);
    
    return 0;
}
//直接变成字符串,纯C语言暴力求解;
编辑于 2020-04-19 21:57:20 回复(1)
先变为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)
#include <iostream>
using namespace std;
int main()
{
    int a[10],i=0,flag;
    long long n;//19位足够
    cin>>n;
    while(n)//获取每一位
    {
        a[i++]=n%10;
        n=n/10;
    }
    for(int k=0;k<i;++k)
    {
        if(a[k]%2==0)
            a[k]=0;
        else
            a[k]=1;
    }
    for(flag=i-1;flag>0;--flag)//寻找第一位不为零
    {
        if(a[flag]!=0)
            break;
    }
    for(int j=flag;j>=0;--j)
    {
        cout<<a[j];
    }
    return 0;
}

发表于 2020-03-28 09:54:28 回复(0)
#include<stdio.h>
int main()
{
	long long n = 0;
	int i = 0;
	int j = 0;
	int arr[10000] = { 0 };
	int m = 0;
	long long a = 0;
	int count = 0;
	int k = 0;
	scanf("%d", &n);
	a = n;
	while (a)
	{
		a /= 10;
		i++;
	}
	for (j = 0; j < i; j++)
	{
	    m = n % 10;
		if (m % 2 == 0)
		{
			arr[j] = 0;
		}
		else
		{
			arr[j] = 1;
		}
		n = n / 10;
	}
	for (j =i-1; j >= 0; j--)
	{
		if (arr[j] == 0)
		{
			continue;
		}
		else
		{
			count = j;
			break;
		}
	}

		for (k=count; k >= 0; k--)
		{
			printf("%d", arr[k]);
		}
		printf("\n");

	return 0;
}

发表于 2021-03-27 17:32:45 回复(0)
#include <stdio.h>
int main()
{   int a[10];
     int i=0,count=0,number=0,flag=0;
    long long int n;
    scanf("%lld",&n);
    while(n)//先确定其数位 将其数位上的每一个数都存储起来
    {
     a[i++]=n%10;
     n=n/10;
     count++;//记录其数位个数
    }
  for(i=count-1;i>=0;i--)
  {
   if(a[i]%2==0)
   a[i]=0;
   else a[i]=1;
  }
  for(i=count-1;i>=0;i--)//将0的位置记录下来
  {
   if(a[i]==0)
   continue;
   else
   {number=i;
  break;}
  }
 
  for(i=number;i>=0;i--)
  {
   printf("%d",a[i]);
  }
  return 0;
}
发表于 2021-02-20 13:26:41 回复(0)
#include <iostream>
#include <string>
using namespace std;
int main(){
    int n;
    string s="";
    cin>>n;
    int r;
    while(n!=0){
        r = n%10;
        n /= 10;
        if(r%2==0) s = "0"+s;
        else s = "1"+s;
    }
    int i = 0;
    while(s[i]=='0') i++;
    if(i==s.length()-1){
        cout<<s[i]<<endl;
        return 0;
    }
    else{
        for(int j=i; j<s.length(); j++) cout<<s[j];
        cout<<endl;
    }
    return 0;
}

发表于 2021-01-29 12:28:05 回复(0)
#include<stdio.h>
int main()
{
   long n,i=0,a[100000000];
   scanf("%ld",&n);
    while(n>=1)
    {
    a[i]=n%10%2;
    n=n/10;
    a[i+1]=n;
    i++;
    }
    
    while(a[i-1]==0)
        {
        i--;
        }
    for(int j=i-1;j>=1;j--)
    {
        printf("%d",a[j]);
    }
    printf("%d",a[0]);
      
    
}
//首先通过对2 的取余运算,把每一位都置成0或者1,然后打印。因为存在前导为0 的状况,则需要判断第一个部位0 的数,把对应的角标用while循环取出,然后重新打印。存在全为0 的,则打印组后一个数。
发表于 2021-01-13 15:37:45 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main(){
    char c[10] = {};
    cin >> c;
    int n=strlen(c),ans=0;
    for(int i=0;i<n;i++){
        int b=((int)c[i])%2;
        ans=ans+b*pow(10,(n-i-1));
    }
    cout<<ans<<endl;
}
发表于 2020-11-23 20:29:38 回复(1)
n=list(input())
a=[]
for i in n:
    if int(i)%2==0:
        a.append('0')
    else:
        a.append('1')
res=''.join(a)
print(int(res))

发表于 2020-10-30 22:08:52 回复(0)
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        for (int i = 0; i < s.length(); i++) {
            if (Integer.valueOf(s.charAt(i))%2==0)
                s=s.replace(s.charAt(i),'0');
            else
                s=s.replace(s.charAt(i),'1');
        }
        System.out.println(Integer.valueOf(s));
    }
}

发表于 2020-10-15 09:54:30 回复(0)
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i;
	char a[100];
	gets(a);
	for (i = 0; a[i] != '\0'; i++)
	{
		if (a[i] % 2 == 0)//偶数赋值为‘0’
			a[i] = '0';
		else
			a[i] = '1';//奇数赋值为‘1’
	}
	printf("%d", atoi(a));//atoi字符串转数字函数
	return 0;
}

发表于 2020-10-08 17:14:54 回复(0)
# include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    //整形数组,存储每位数
    int arr[s.length()];
    int m = 0,n = 0;
    //循环把返回字符串每个字符,转化类型后,存储
    for(int i = 0;i<s.length();i++){
        arr[i] = int(s.at(i));
        if(arr[i] % 2 == 0)
            arr[i] = 0;
        else
            arr[i] = 1;
        
        //个位
        m = arr[i];
        n += m;
        //进位,注意后面输出的时候,需要除以10
        n *= 10;
        
        
       
        
    }
    cout<<n/10;
    return 0;
    
    
}

发表于 2020-10-04 11:02:26 回复(0)
import java.util.Scanner;

/**
 * @program: arask
 * @description: test
 * @author: fubowen
 * @create: 2020-08-21 13:55
 **/
public class Main {
    public static void main(String[] args) throws Exception{
        Scanner scanner=new Scanner(System.in);
        //获取数值
        //数字当成字符串处理
        while (scanner.hasNextInt()){
            String n=scanner.next();
            String result="";
            for(int i=0;i<n.length();i++){
                char c=n.charAt(i);
                int num=Integer.parseInt(String.valueOf(c));
                if(num%2==0){
                    //偶数
                    result+="0";
                }else{
                    result+="1";
                }
            }
            System.out.println(Integer.parseInt(result));


        }

    }
}

发表于 2020-09-29 09:34:55 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        String n = scan.nextLine();
        int len = n.length();
        int[] arr = new int[len];
        int[] res = new int[len];
        for(int i=0;i<len;i++){
            arr[i] = n.charAt(i);
        }
        for(int j=0;j<len;j++){
            res[j] = arr[j]%2;
        }
        int count=0;
        for(int k = 0;k<len;k++){
            if(res[k]==0){
                count++;
            }else{
                break;
            }
        }
        if(count==len){System.out.println("0");}else{
            for(int m= count;count<len;count++){
                System.out.print(res[count]);
            }
        }
    }
}
太暴力了,我这思路感觉我完了
发表于 2020-09-27 21:03:51 回复(0)
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)
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String num=sc.nextLine();
        String[] arr=num.split("");
        int len=arr.length;
        StringBuffer s = new StringBuffer();
        int[] number=new int[len];
        for(int i=0;i<=len-1;i++){
            number[i]=Integer.parseInt(arr[i]);
            if(number[i]%2==0){
                number[i]=0;
            }else{
                number[i]=1;
            }
           s.append(number[i]);
          
        }
        int sum=Integer.valueOf(s.toString());
               System.out.print(sum);
        
        }
        
        }
    

发表于 2020-09-16 15:54:56 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main(){
        string s,ans;cin>>s;
        for(int i=0;i<s.size();i++){
            int k=s[i]-'0';
            if(k%2)ans+='1';
            else ans+='0';
        }
        cout<<stoi(ans)<<endl;
}
发表于 2020-06-05 11:49:12 回复(0)

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    scanf("%d",&n);
    int ans[11]={0}; //ans作为输出数组,存0和1
    for(int i=0;i<11;i++){
        if((n%10)%2==1){
            ans[10-i] = 1; //遇到奇数位则置1
        }
        n /= 10;
    }
    
    int flag = 0; //flag用于判断若全部数字都是偶数的话,则单独输出一个0
    for(int i=0;i<11;i++){
        if(ans[i]!=0){ //遍历ans,遇到不是0的数字开始进行输出
            for(int j=i;j<11;j++){
                printf("%d",ans[j]);
            }
            flag = 1;
            break;
        }
    }
    if(flag==0){
        cout<<"0"<<endl;
    }
}

发表于 2020-05-11 22:02:29 回复(0)