1 条题解

  • 0
    @ 2025-4-12 21:50:59

    C :

    #include<stdio.h>
    #include<string.h>
    
    int t[4000];
    
    int chang(int a[4000],int b)
    {
        int c=0;
        while(b!=0)
        {
            if(a[0]!=1)
            {
                if(a[b-1]%2==1)
                    t[c]=1;
                else
                    t[c]=0;
                for(int i=0; i<b; i++)
                {
                    if(a[i]%2==1)
                    {
                        a[i+1]+=10;
                    }
                    a[i]=a[i]/2;
                }
                c++;
            }
            else
            {
                if(a[b-1]%2==1)
                    t[c]=1;
                else
                    t[c]=0;
                a[1]+=10;
                for(int i=1; i<b; i++)
                {
                    if(a[i]%2==1)
                    {
                        a[i+1]+=10;
                    }
                    a[i-1]=a[i]/2;
                }
                a[b-1]=0;
                b=b-1;
                c++;
            }
        }
        return c;
    
    }
    
    int main()
    {
        char a[4000];
        int b[4000],c,d,e[4000];
        memset(t,0,sizeof(t));
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(e,0,sizeof(e));
        while(scanf("%s",a)!=EOF)
        {
            c=strlen(a);
            if(a[1]=='\0'&&a[0]=='0')
            {
           A1 : printf("0\n");
                continue;
            }
    
            for(int i=0; i<c; i++)
            {
                b[i]=a[i]-48;
            }
             while(b[0]==0)
            {
                for(int i=0;i<c;i++)
                {
                    b[i]=b[i+1];
                }
                c--;
                if (c==0)
                goto A1;
            }
    
            d = chang(b,c);
            for(int i=0; i<d; i++)
            {
                e[i]=t[d-i-1];
            }
    
            for(int i=0; i<d; i++)
            {
                printf("%d",e[i]);
            }
            printf("\n");
            memset(t,0,sizeof(t));
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            memset(e,0,sizeof(e));
        }
        return 0;
    }
    
    
    

    C++ :

    #include<stdio.h>
    #include<string.h>
    
    char result[1000];
    
    void base_convert(char num[],int s,int e)
    {
    	int i,flag,k,j,a[1000],b[1000];
    	for(i=0;i<strlen(num);i++)
    		a[i]=num[i]-48;
    	k=0;
    	while(1)
    	{
    		for(i=0;i<strlen(num);i++)
    		{
    			if(a[i]!=0&&i<strlen(num)-1)
    			{
    				a[i+1]+=(a[i]%e)*s;
    				a[i]/=e;
    			}
    			if(i==strlen(num)-1)
    			{
    				b[k++]=a[i]%e;
    				a[i]/=e;
    			}
    		}
    		flag=0;
    		for(i=0;i<strlen(num);i++)
    			if(a[i]!=0)
    				flag=1;
    		if(!flag)
    			break;
    	}
    	for(j=0,i=k-1;i>=0;i--)
    		result[j++]=b[i]+48;
    	result[j]='\0';
    }
    
    int main()
    {
    	char n[31];
    	while(scanf("%s",n)!=EOF)
    	{
    		base_convert(n,10,2);
    		puts(result);
    	}
    	return 0;
    }
    

    Pascal :

    var a:string;
    function mod2(a:string):string;
    begin
    if odd(ord(a[length(a)]))then mod2:='1' else mod2:='0'
    end;
    function div2(a:string):string;
    var i:integer;
    begin
     div2:='';
     for i:=1 to length(a) do
      begin
       if odd(ord(a[i])) then a[i+1]:=chr(ord(a[i+1])+10);
       div2:=div2+chr(ord(a[i])div 2+24)
      end;
     while pos('0',div2)=1 do delete(div2,1,1)
    end;
    function work(a:string):string;
    var r:string;
    begin
     r:=mod2(a);
     a:=div2(a);
     if a='' then work:=r else work:=work(a)+r
    end;
    begin
     while not eof do
      begin
       readln(a);
       writeln(work(a))
      end
    end.
    

    Java :

    import java.math.BigInteger;
    import java.util.Scanner;
    public class Main{
    	public static void main(String[] args) {
    		Scanner cin = new Scanner(System.in);
    		while(cin.hasNext()){
    			System.out.println(new BigInteger(cin.next()).toString(2));
    		}
    	}
    }
    

    Python :

    # coding=utf-8
    import sys
    
    for line in sys.stdin.readlines():
        print(bin(int(line)).replace('0b',''))
    
    
    • 1

    信息

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