1 条题解

  • 0
    @ 2025-4-7 21:28:48

    C :

    #include <stdio.h>
    void main() {
        void complement(char p[], char ret[]);
        char p[20], ret[20];
        scanf("%s", p);
        complement(p, ret);
        printf("%s\n", ret);
    }
    void complement(char p[], char ret[]) {
        int i, add;
        if (p[0] == '1') {
            ret[0] = '1';
            for (i = 1;i < 16;i++)
                if (p[i] == '1')
                    ret[i] = '0';
                else
                    ret[i] = '1';
            i = 15;
            add = 1;
            while (add > 0) {
                add = (ret[i] - '0') + add;
                ret[i] = '0' + (add & 1);
                i--;
                add >>= 1;
            }
            ret[16] = '\0';
        } else {
            strcpy(ret, p);
        }
    }
    

    C++ :

    #include<iostream>
    #include<cstring>
    using namespace std;
    int main()
    {
      char s[20];
      cin>>s;
      for(int i=1;i<strlen(s);i++)
        if(s[i]=='0')s[i]='1';
        else s[i]='0';
        
      for(int i=strlen(s)-1;i>=1;i--)
        if(s[i]=='0'){s[i]='1';break;}
      else s[i]='0';
      cout<<s<<endl;
      return 0;
    }
    

    Pascal :

    Program TK1322;
    var s:string; l,i,j:longint;
    
    Begin 
    	readln(s);
    	if s[1]='0' then begin 
    		writeln(s); exit;
    	end; l:=length(s)-1;
    	for i:=1 to l do s[i]:=s[i+1];
    	s[l+1]:=' '; write('1');
    	for i:=l downto 1 do if s[i]='1' then begin 
    		s[i]:='0'; 
    		for j:=i+1 to l do s[i]:='1';
    	end; 
    	for i:=1 to l do if s[i]='0' then s[i]:='1'
    		else if s[i]='1' then s[i]:='0';
    	writeln(s);
    End.	
    

    Java :

    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args){
    		Scanner cin=new Scanner(System.in);
    		String s=cin.nextLine();
    		cin.close();
    		if(s.substring(0,1)=="0")
    			System.out.println(s);
    		else{
    		int a=Integer.parseInt(s,2);
    		int sum=1;
    		while(sum<a)
    			sum*=2;
    		sum/=2;
    		a-=sum;
    		a=~a;
    		a+=sum;
    		a++;
    		System.out.println("1"+Integer.toBinaryString(a));
    		}
    	}
    }
    
    
    • 1

    信息

    ID
    1397
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者