1 条题解
-
0
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
- 上传者