在PASCAL下 如何将36进制数化为10进制数(请提供算法)

2023-01-24 02:36

2个回答
又学到知识,楼上高手~!
输入:
输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000****00,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。

输出:
输出仅一行,包含一个正整数,表示转换之后的m进制数。

样例:
change.in
16
FF
2

change.out
1111****

program asdf;
var
n,m,h,i:integer;
f:longint;
s:string;
a:array[1..2000]of char;
function fj(d:string):longint;
var
i,j,k:integer;
begin
fj:=0;
for i:=1 to length(d) do
begin
k:=1;
for j:=1 to length(d)-i do k:=k*n;
if (n<=10)or((d[i]>='0')and(d[i]<='10'))
then k:=k*(ord(d[i])-ord('0'))
else k:=k*(ord(d[i])-ord('A'));
fj:=fj+k;
end;
end;
procedure fd(t:longint);
var
i:integer;
begin
h:=2001;
while t>0 do
begin
i:=t mod m;
dec(h);
if i<10 then a[h]:=chr(ord('0')+i)
else a[h]:=chr(ord('A')+i-10);
t:=t div m;
end;
end;
begin
assign(input,'change.in');
assign(output,'change.out');
reset(input);
rewrite(output);
readln(n);
readln(s);
readln(m);
f:=fj(s);
fd(f);
for i:=h to 2000 do
write(a[i]);
writeln;
close(input);
close(output);
end.
相关问答
pascal 36进制转十进制的程序
3个回答2022-10-06 22:58
36进制转10进制: var s:string; i,j,k,l:longint; o,p:int64; begin readln(s); o:=0;p:=1; for i:=8 dow...
全文
36进制转换为10进制要怎麼算
2个回答2023-05-31 09:36
首先R是多少, 好像是27 , 你自己慢慢数吧 Y是34 所以 R9就是 27 * 36 + 9 = 自己算吧 10Y 就是 1* 36*36 + 0 * 36 + 34 =
36进制计算器
1个回答2022-12-20 11:22
36进制?你发明的?
提供动画短片制作故事
1个回答2024-01-25 19:21
给你一个建议 我也是学动画的,当年毕业作品排名第一 主要原因就是画面简单 但是看着不简单 你可以找一首MTV,就把人物画好了 再搭配歌曲,你的作品肯定出众 就简单的人物挪动 然后有点动作 或者旁边的...
全文
36进制转10进制函数
1个回答2023-01-13 02:56
我倒是很好奇:36进制怎么表示? 16进制都用上英文字母了,那36进制竟然刚好把字母用完! 还好奇:36进制主要用在什么地方?
36进制的数字怎么算?
3个回答2023-03-21 19:36
36进制的数字化为十进制数字的方法: 从右到左,每两个数一组。将第一组数字乘以1,将第二组的数字乘以36,将第三组的数字乘以36²,将第四组的数字乘以36³,以此类推,再将所有的和相加。 如:1232...
全文
36进制如何转为10进制,求过程,比如eu
2个回答2023-01-16 12:15
题目没有说清楚,请详细说明题意.
如何在WPS进行36进制转10进制?
1个回答2022-11-18 05:30
没找到36进制函数,自己用公式算吧,截取右边第一位加上右边第2位*36加右边第3位*36*36.....感觉没好的办法
热门问答