• [洛谷1143]进制转换


    第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16)

    第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000

    第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。

    先把一个数n进制的数转化成10进制的数,再把一个10进制的数转化成一个m进制的数

    把一个n进制数x转换成10进制,x以字符串形式出现,以数值形式返回

    function p(n:longint;s:string):longint;
    var i:longint;
    begin
        p:=0;
        for i:=1 to length(s) do 
           begin
               p:=p*n;
               if s[i]='A''B'C'D'E'F'.... then Inc(p,ord(s[i])-ord('A')+10)
               else inc(p,ord(s[i])-48);
           end;
    end;

    把一个10进制数x转换成n进制,f是早打好的该进制中的数表

    while x<>0 do 
        begin
            inc(k);
            a[k]:=x mod n;
            x:=x div n;
        end;
    for i:=1 to k do 
        write(f[a[i]]);

    巨恶心无比的代码

    const
        two:array[0..1] of char=('0','1');
        three:array[0..2] of char=('0','1','2');
        four:array[0..3] of char=('0','1','2','3');
        five:array[0..4] of char=('0','1','2','3','4');
        six:array[0..5] of char=('0','1','2','3','4','5');
        seven:array[0..6] of char=('0','1','2','3','4','5','6');
        eight:array[0..7] of char=('0','1','2','3','4','5','6','7');
        nine:array[0..8] of char=('0','1','2','3','4','5','6','7','8');
        eleven:array[0..10] of char=('0','1','2','3','4','5','6','7','8','9','A');
        twelve:array[0..11] of char=('0','1','2','3','4','5','6','7','8','9','A','B');
        thirteen:array[0..12] of char=('0','1','2','3','4','5','6','7','8','9','A','B','C');
        fourteen:array[0..13] of char=('0','1','2','3','4','5','6','7','8','9','A','B','C','D');
        fifteen:array[0..14] of char=('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E');
        sixteen:array[0..15] of char=('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
    
    var a:array[0..100000] of longint;
        i,j,k,n,x,m:longint;
        y:string;
        ch:char;
    
    procedure shiliu(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 16;
                n:=n div 16;
            end;
        for i:=k downto 1 do
            write(sixteen[a[i]]);
    end;
    procedure shiwu(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 15;
                n:=n div 15;
            end;
        for i:=k downto 1 do
            write(fifteen[a[i]]);
    end;
    procedure shisi(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 14;
                n:=n div 14;
            end;
        for i:=k downto 1 do
            write(fourteen[a[i]]);
    end;
    procedure shisan(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 13;
                n:=n div 13;
            end;
        for i:=k downto 1 do
            write(thirteen[a[i]]);
    end;
    procedure shier(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 12;
                n:=n div 12;
            end;
        for i:=k downto 1 do
            write(twelve[a[i]]);
    end;
    procedure shiyi(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 11;
                n:=n div 11;
            end;
        for i:=k downto 1 do
            write(eleven[a[i]]);
    end;
    procedure jiu(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 9;
                n:=n div 9;
            end;
        for i:=k downto 1 do
            write(nine[a[i]]);
    end;
    procedure ba(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 8;
                n:=n div 8;
            end;
        for i:=k downto 1 do
            write(eight[a[i]]);
    end;
    procedure qi(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 7;
                n:=n div 7;
            end;
        for i:=k downto 1 do
            write(seven[a[i]]);
    end;
    procedure liu(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 6;
                n:=n div 6;
            end;
        for i:=k downto 1 do
            write(six[a[i]]);
    end;
    procedure wu(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 5;
                n:=n div 5;
            end;
        for i:=k downto 1 do
            write(five[a[i]]);
    end;
    procedure si(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 4;
                n:=n div 4;
            end;
        for i:=k downto 1 do
            write(four[a[i]]);
    end;
    procedure san(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 3;
                n:=n div 3;
            end;
        for i:=k downto 1 do
            write(three[a[i]]);
    end;
    procedure er(n:longint);
    begin
        while (n<>0) do
            begin
                inc(k);
                a[k]:=n mod 2;
                n:=n div 2;
            end;
        for i:=k downto 1 do
            write(two[a[i]]);
    end;
    procedure shi(n:longint);
    begin
        writeln(n);
    end;
    function change(n:longint;s:string):longint;
    var i:longint;
    begin
        change:=0;
        for i:=1 to length(s) do
            begin
                change:=change*n;
                if (s[i]='A')or(s[i]='B')OR(S[I]='C')OR(S[I]='D')OR(S[I]='E')OR(S[I]='F') then
                    change:=change+(ord(s[i])-ord('A')+10)
                else change:=change+(ord(s[i])-48);
            end;
    end;
    begin
        readln(n);
        readln(y);
        readln(m); 
        if y='0' then
            begin
                writeln(0);
                halt;
            end;
        x:=change(n,y);
        case m of
            2:er(x);
            3:san(x);
            4:si(x);
            5:wu(x);
            6:liu(x);
            7:qi(x);
            8:ba(x);
            9:jiu(x);
            10:shi(x);
            11:shiyi(x);
            12:shier(x);
            13:shisan(x);
            14:shisi(x);
            15:shiwu(x);
            16:shiliu(x);
        end;
    end.
  • 相关阅读:
    零食里的营养成分表百分比什么意思
    ROS公司出了一个新需求,pppoeclient拨号失败的时候,同时ippool要更新相应的地址池给用户pptp使用
    据说很不错的无线厂家aruba和ubnt
    Android开发实现NFC刷卡读取的两种方式
    高级 NFC 概览
    Android开发之深入理解NFC(一)
    搭建codeserver
    基于主机的卡模拟概览
    termux备份发行版prootdistro
    浅谈Android开发中的NFC功能
  • 原文地址:https://www.cnblogs.com/yangqingli/p/4939719.html
Copyright © 2020-2023  润新知