1 条题解

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

    C :

    #include <stdio.h>
    #include <string.h>
    
    char num[]="0123456789ABCDEF";
    int ascii[128]={0};
    
    void Init()
    {
      for(int i=0;i<=9;i++)
        ascii[i+'0']=i;
      for(int i=0;i<=5;i++)
      {
        ascii['a'+i]=10+i;
        ascii['A'+i]=10+i;
      }
    }
    
    long Strnum(char str[],int hex)
    {
      long ans=0;
      int i=0;
      while(str[i])
      {
        ans=ans*hex+ascii[str[i]];
        i++;
      }
      return(ans);
    }
    
    char *Numstr(char str[],long number,int hex)
    {
      str[0]='0';
      int i=0;
      while(number)
      {
        str[i]=num[number%hex];
        number/=hex;
        i++;
      }
      if(i)
        str[i]='\0';
      else
        str[1]='\0';
      int len=strlen(str);
      char chartmp;
      for(i=0;i<len/2;i++)
      {
         chartmp=str[i];
         str[i]=str[len-i-1];
         str[len-i-1]=chartmp;
      }
      return(str);
    }
    main()
    {
    	Init();
        int a,b;
    	char str[100];
    	while(scanf("%d%s%d",&a,str,&b)!=-1)
    	{
    		long number=Strnum(str,a);
    		puts(Numstr(str,number,b));
    	}
    }
    

    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++)
    	{
    		if(num[i]>='a'&&num[i]<='f')
    			a[i]=num[i]-'a'+10;
    		else if(num[i]>='A'&&num[i]<='F')
    			a[i]=num[i]-'A'+10;
    		else
    			a[i]=num[i]-'0';
    	}
    	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--)
    	{
    		if(b[i]>=10&&b[i]<=15)
    			result[j++]=b[i]+'A'-10;
    		else
    			result[j++]=b[i]+48;
    	}
    	result[j]='\0';
    }
    
    int main()
    {
    	int a,b;
    	char n[1000];
    	while(scanf("%d%s%d",&a,n,&b)!=EOF)
    	{
    		base_convert(n,a,b);
    		puts(result);
    	}
    	return 0;
    }
    

    Pascal :

    var mst,st,st1:string;
        s,i,j,len,m,n,o,p:longint;k:qword;
        a,b:array[1..10000] of integer;
    
    begin
       while not eof do
         begin
           readln(mst);
           p:=pos(' ',mst); val(copy(mst,1,p-1),m);delete(mst,1,p);
           p:=pos(' ',mst); st:=copy(mst,1,p-1); st:=upcase(st);delete(mst,1,p);
           val(mst,n);
    
           len:=length(st);
           for i:=1 to len do
              if st[i] in ['0'..'9']  then a[len+1-i]:=ord(st[i])-48
                     else  a[len+1-i]:=ord(st[i])-55;
    
            k:=0;s:=1;
           for i:=1 to len do
             begin
                k:=k+a[i]*s;
                s:=s*m;
              end;
    
           i:=0;
           repeat
              inc(i);
              b[i]:=k mod n;
              k:=k div n;
            until k=0;
    
         for j:=i downto 1 do
            if b[j]<10 then write(chr(b[j]+48)) else write(chr(b[j]+55));
         writeln;
         end;
    end.
    

    Java :

    
    import java.util.*;
    import java.math.*;
    
    public class Main {
    
    public static void main(String args[]){
    
    Scanner cin=new Scanner(System.in);
    
    while(cin.hasNext()){
    
    int a=cin.nextInt();
    
    BigInteger c=new BigInteger(cin.next(),a);
    
    int b=cin.nextInt();
    
    System.out.println(c.toString(b).toUpperCase());
    
    }
    
    }
    }
    
    • 1

    信息

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