早教吧 育儿知识 作业答案 考试题库 百科 知识分享

pascal题目-栈-进制转换题目描述十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理:N=(Ndivd)×d+Nmodd(其中:div为整

题目详情
pascal题目-栈-进制转换
题目描述
十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理:
   N
= (N div d)×d + N mod d
(其中:div
为整除运算,mod 为求余运算)
例如:(1348)10
= (2504)8 ,其运算过程如下所示: 
8|_1348_
8|_168__
4
8|_21___
0
8|_2____
5
8|_0____
2
结果为2504
请帮忙设计一个程序,输入10进制数和需要转换的进制,求出对应的进制转化后的数。
输入
有多组数据,对于每组数据,输入两个正整数,10进制数n和需要转化的进制m,其中,n是个不超过int范围的正整数,m是个2到9的正整数。
输出
对于每组数据,输出所对应的进制转化后的数。
样例输入
1348 8
34 5
样例输出
2
5
0
4
1
1
4
▼优质解答
答案和解析
非常基础的进制转化,思路在代码中给出:
var
a:array[0..100] of longint;
x,y,k,i:longint;
begin
while not eof do
begin
readln(x,y);
k:=0;//从头开始,个数清零
while x>0 do
begin
k:=k+1;//移到下一个位置
a[k]:=x mod y;//取余数
x:=x div y;
end;
if k=0 then writeln(0);//防止被坑,当x=0的时候也要输出0
for i:=k downto 1 do writeln(a[i]);//倒序输出
end;//判断输入有没有结束
end.