第1个回答 2011-01-25
var s:string; //记录长度
n,k,t,i:longint;
begin
readln(n);
str(n,s);
readln(k);
t:=1;
tot:=0; //转换后的数值
for i:=1 to length(s) do
begin
inc(tot,ord(s[i])-48); //一个个加上去,这会用吧=tot:=tot+ord(s[i])-48
t:=t*k;
end;
writeln(tot); //输出
end.
{直接打的,自己没编译}
第2个回答 2011-01-31
var
a:ansistring;
i,k,l,t,o:longint;
s:int64;
begin
readln(a,k);
l:=length(a);
t:=1; //k^0=1
for i:=l downto 1 do
begin
o:=ord(a[i]);
if (o<ord('0'))or(o>ord('9')) then o:=o-ord('A')+10 //不在0~9(>10进制的情况)
else o:=o-ord('0'); //是数字
inc(s,o*t); //按位乘权
t:=t*2;
end;
writeln(s);
end.
第3个回答 2011-01-25
那你总要给出是几进制的哇。。。
假设是n进制的
那就是转换成字符串后最后一位*1+倒数第二位*n+倒数第三位*n*n+……
类推累加下去
要程序请另加分。。。。。
第4个回答 2011-01-25
..起码给出几进制啊!
如果8进制和10进制程序好像没法判断
第5个回答 2011-01-26
我会十进制转换任意进制:
var
n,m:int64;
i,j:longint;
a:array[0..1000] of longint;
begin
readln(n);
readln(m);
j:=0;
while n>0 do
begin
inc(j);
a[j]:=n mod m;
n:=n div m
end;
a[0]:=j;
for i:=a[0] downto 1 do
write(a[i]);
writeln;
end.