1 条题解

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

    C :

    #include<stdio.h>
    #include<string.h>
    #define max 1000
    
    char ans[max];
    
    void convert(char str[], int m, int n){
    	int i, j, k, a[max], b[max], flag;
    	for(i=0; i<strlen(str); i++){
    		a[i] = str[i]-48;
    	}
    	k = 0;
    	while(1){
    		for(i=0; i<strlen(str)-1; i++){
    			if(a[i]!=0){
    				a[i+1] += (a[i]%n)*m;
    				a[i] /= n;
    			}
    		}
    		b[k++] = a[i]%n;
    		a[i] /= n;
    		flag = 0;
    		for(i = 0; i<strlen(str); i++){
    			if(a[i]!=0){
    				flag = 1;
    			}
    		}
    		if(!flag){
    			break;
    		}
    	}
    	for(j=0, i=k-1; i>=0; i--){
    		ans[j++] = b[i]+48;
    	}
    	ans[j] = '\0';
    }
    
    int main(){
    	int i;
    	char str[max];
    	while(scanf("%s",str)!=EOF){
    		convert(str,10,2);
    		memset(str,0,sizeof(str));
    		for(i=0; i<strlen(ans); i++){
    			str[i] = ans[strlen(ans)-1-i];
    		}
    		str[i] = '\0';
    		memset(ans,0,sizeof(ans));
    		convert(str,2,10);
    		puts(ans);
    	}
    	return 0;
    }
    

    C++ :

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    char result[5001];
    
    void base_convert(char num[],int s,int e)
    {
    	int i,flag,k,j,a[5001],b[5001];
    	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 s[1001];
    	while(scanf("%s",s)!=EOF)
    	{
    		base_convert(s,10,2);
    		reverse(result,result+strlen(result));
    		base_convert(result,2,10);
    		puts(result);
    	}
    	return 0;
    }
    

    Java :

    import java.util.*;
    import java.math.BigDecimal;
    public class Main {
    	public static void main(String[] args){
    		Scanner cin=new Scanner(System.in);
    		String  s;
    		while(cin.hasNext()){
    			s=cin.nextLine();	
    			System.out.println(shi(er(s)));
    		}
    	}
    	public static String shi(String str){
    		int len=str.length()-1;
    		BigDecimal a=new BigDecimal(1),e=new BigDecimal(2),f=new BigDecimal(0);
    		for(int i=len;i>=0;i--)	{
    			if(str.charAt(i)=='1')
    				{
    					f=f.add(a);
    				}		
    				a=a.multiply(e);
    			}
    		return f+"";
    	}
    	public static String er(String str){
    		BigDecimal a=new BigDecimal(str),b=new BigDecimal(1),c=new BigDecimal(2),d=new BigDecimal(0);
    		int i=0;
    		String s="";
    		while(a.compareTo(d)!=0){		
    			if((a.remainder(c)).compareTo(b)==0)
    				s+=1+"";
    			else  
    				s+=0+"";
    			a=a.divide(c,0,BigDecimal.ROUND_HALF_DOWN);
    		}
    		return s;
    	}
    }
    
    
    • 1

    信息

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