【入门】2的100次方 用pascal语言

【试题描述】2的100次方是一个很大的数,计算机无法直接计算出来,编程求该式的准确结果(从最高位到最低位每一位都要打印出来)【输入描述】无【输出描述】一行数字【输入样例】... 【试题描述】

2的100次方是一个很大的数,计算机无法直接计算出来,编程求该式的准确结果(从最高位到最低位每一位都要打印出来)

【输入描述】



【输出描述】

一行数字

【输入样例】

【输出样例】

【试题来源】
展开
 我来答
高岭清麻吕
2011-07-27
知道答主
回答量:19
采纳率:0%
帮助的人:21.5万
展开全部
就像题目所说的,计算机无法直接计算出来这个数,所以要用到“高精度”这个算法。
根据题意,本题用的是乘法高精度。
高精度的原理就是把数的每一位都当作是数组中的一个元素,然后分别将数组中的每一位去乘2,再进行进位,就像小学数学中的竖式乘法一样。
以下是程序:
Program duniang;
var i,j:integer;
a:array[1..40] of integer;
begin
a[1]:=1; {2^0是1,所以将个位保存为1,其他位均是原始数据0}
for i:=1 to 100 do {因为题目要求是100次方,所以要乘100次2}
begin
a[1]:=a[1]*2; {这是为了方便之后的进位,先将第一位*2}
for j:=2 to 40 do {到40是估算一下的,因为2^10近似于10^3,所以2^100大约就是10^30多次,保险起见取40}
begin
a[j]:=a[j]*2; {让第J位*2}
a[j]:=a[j]+a[j-1] div 10; {这里的a[j-1] div 10就是看前一位有没有进位,如果a[j-1]小于10, div10之后是0;大于10,div 10之后就是十位上的数字了,这样就能起到进位的作用}
a[j-1]:=a[j-1] mod 10; {mod10 操作,不管a[j-1]大不大于10,都只取个位了,这样就起到了进位后的处理工作}
end;
end;
i:=40;
while a[i]=0 do dec(i); {找到第一个不是0的位数,这应该是这组数的最高位}
for j:=i downto 1 do write(a[j]);
end.

这是我直接在解答栏里 裸打的,没有拖到编译器里去测试,也许有些错误和问题。
讲解很到位了,如果还有不懂的,来问我就好了
liaer
2011-07-29 · TA获得超过278个赞
知道答主
回答量:180
采纳率:0%
帮助的人:76.5万
展开全部
高精度乘法,用数组存储,每位乘2,取模10放入下一位,计数器加一,反复一百次,即可。
程序要自己写自己想,上网求人是没用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huangqianmin1
2011-07-27 · TA获得超过253个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:179万
展开全部
const max=10000;
var n,i,j,h:integer;
a:array[1..10001]of integer;
begin
fillchar(a,sizeof(a),0);
a[1]:=1;
for i:=1 to 100 do
begin
for j:=1 to max do
a[j]:=a[j]*2;
for j:=1 to max do
begin a[j+1]:=a[j+1]+a[j] div 10;
a[j]:=a[j] mod 10;end;
end;
i:=max;
while a[i]=0 do
i:=i-1;
for j:=i downto 1 do
write(a[j]);
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzwyy
2011-07-27 · 超过12用户采纳过TA的回答
知道答主
回答量:239
采纳率:0%
帮助的人:148万
展开全部
program ling;
const max=10000;
var n,i,j,h:integer;
a:array[1..10001]of integer;
begin
fillchar(a,sizeof(a),0);
a[1]:=1;
for i:=1 to 100 do
begin
for j:=1 to max do
a[j]:=a[j]*2;
for j:=1 to max do
begin a[j+1]:=a[j+1]+a[j] div 10;
a[j]:=a[j] mod 10;end;
end;
i:=max;
while a[i]=0 do
i:=i-1;
for j:=i downto 1 do
write(a[j]);
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
赤兔马一天
2011-08-03 · TA获得超过220个赞
知道答主
回答量:206
采纳率:0%
帮助的人:46.9万
展开全部
高精度运算
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式