2的100次方用pascal语言

作者&投稿:戢潘 (若有异议请与网页底部的电邮联系)
【入门】2的100次方 用pascal语言~

就像题目所说的,计算机无法直接计算出来这个数,所以要用到“高精度”这个算法。
根据题意,本题用的是乘法高精度。
高精度的原理就是把数的每一位都当作是数组中的一个元素,然后分别将数组中的每一位去乘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.

这是我直接在解答栏里 裸打的,没有拖到编译器里去测试,也许有些错误和问题。
讲解很到位了,如果还有不懂的,来问我就好了

//这个题是高精度运算,因为位数已经达到了31位,程序如下:
program cf;
var a:array[1..31]of longint;
i,j,len:longint;
begin
fillchar(a,sizeof(a),0);
a[1]:=1;len:=1;
for i:=1 to 100 do begin
for j:=1 to len do
a[j]:=a[j]*2;
for j:=1 to len-1 do
if a[j]>=10 then begin
a[j+1]:=a[j] div 10+a[j+1];
a[j]:=a[j] mod 10;
end;
while a[len]>=10 do begin
a[len+1]:=a[len] div 10;
a[len]:=a[len]mod 10;
inc(len);
end;
end;
for i:=len downto 1 do write(a[i]);
writeln;
end.

完整程序如下:

{$apptype console}
program exp;
var
  s:string;
  i,j,k,n:integer;
begin
  write('本程序高精度计算2的n次方,n=');
  readln(n);
  s:='1';
  for i:=1 to n do
  begin
    k:=0;
    for j:=1 to length(s) do
    begin
      k:=k+(ord(s[j])-ord('0'))*2;
      s[j]:=chr(ord('0')+k mod 10);
      k:=k div 10;
    end;
    if k>0 then s:=s+chr(ord('0')+k);
  end;
  for i:=length(s) downto 1 do write(s[i]);
end.

本程序在DELPHI下调试通过,运行过程如下:
E:\ygb>dcc32 a.dpr
Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
a.dpr(23)
24 lines, 0.05 seconds, 11500 bytes code, 1809 bytes data.

E:\ygb>a.exe
本程序高精度计算2的n次方,n=10
1024
E:\ygb>a.exe
本程序高精度计算2的n次方,n=100
1267650600228229401496703205376
E:\ygb>a.exe
本程序高精度计算2的n次方,n=200
1606938044258990275541962092341162602522202993782792835301376
E:\ygb>

高精度乘方有很多种实现方法
2^100用朴素的高精度就可以过了,算法如下

Program ex;
Const
x = 2;
y = 100;

Var
a: array [1..1000] of byte;
i, j, k, t: integer;

Begin
a[1] := 1;
for i:=1 to y do
begin
k := 0;
for j:=1 to 1000 do
begin
t := a[j] * x + k;
a[j] := t mod 10;
k := t div 10;
end;
end;

j := 0;
for i:=1000 downto 1 do
if (a[i] <> 0) or (j <> 0) then
begin
write(a[i]);
inc(j);
end;

End.


115aw8等于多少pa
你是想问115aw等于多少pa吗。11652375pa。1aw=101325Pa,如果要换算成kpa,需要知道真空吸力,和空气流量值1aw=101325Pa,约为1.01×10的5次方Pa。AW吸力叫气动功率产生吸力,KPA吸力通常来表示吸尘器的吸力大小。故115aw=11652375pa。aw就是吸力的意思。就等于100吸力。AW吸力为气动功率产生的吸力,...

初3压强计算~2题,在线等
1.(100+10)\/0.1=1100pa 2.(1) m=pv=0.002*(0.8*10的3次方)=1.6KG (2) 1.6*10=16N 16\/0.02=800pa

请问:1pa等于多少mpa?
P0=ρ水银*g*h=13.6*10^3*9.8*0.76=1.01*10^5 帕 1atm就是1个标准大气压 1atm=101325Pa(Pa为帕斯卡,压强国际单位),约为1.01×10的5次方Pa 1 atm=760 mmHg=1.01325×10ˇ5 pa≈0.1 Mpa=1 Kgf\/cm2 教科书 1atm=100KPa,1atm=1013.25hPa,1hPa=100Pa(“hPa”中的...

标准大气压等于多少pa?
1个标准大气压=1.013x10^5Pa=0.1013MPa 气体压强 在任何表面的单位面积上空气分子运动所产生的 压力。气压以百帕(hPa)为单位,取一位小数。公式为P=ρ(密度)g(重力)h(高度)常用单位 标准大气压。表示气压的单位,习惯上常用水银柱高度。例如,一个 标准大气压等于760毫米高的水银柱的重量...

1gpa等于多少pa
解答:1 gPa=1000000000Pa 其中,GPA是压强单位。压强的常用单位有巴(bar)、千帕(kPa)、兆帕(MPa)、PSI等。“p”是指压强(注意:是小写的“p”,而不是大写的“P”,大写“P”是指做功的功率)单位是“帕斯卡”,简称“帕”,符号是“Pa”。

1Mpa等于多少N
1Mpa = 1000000Pa = 1000000N\/m2

浮力问题急需~~~
V=m铝\/ρ铝=0.27\/2.7=0.1dm^3 F浮=ρ水×g×V=1×10×0.1=1N 根据力的作用是相互的,水对铝块施加一个向上的浮力F浮,则铝块对水施加一个向下的压力F压,即F压=F浮=1N 则容器底受到的压强增加了P=F压\/S=1N\/(100×10^-4m^2)=100Pa 如果上面的方法你没理解,也可以用另一...

1Mpa等于多少公斤\/平方厘米
。根据:1MPa=1000000Pa;1Pa=1N\/m2;1Kgf=9.8067N;1m2=10000cm2 可以换算得出:1MPa=10.1971Kgf\/cm2。1帕斯卡(Pa)=1牛顿\/平方米(1N\/㎡) ;1MPa=10的六次方Pa=100万Pa=1000000Pa=1000000 N\/㎡。即1MPa等于1000000N\/㎡【公式见[P=F\/S(F为压力,s为受力面积)]】...

1Mpa=多少pa 1标准大气压=多少Mpa
1Mpa=1×10^6Pa,1标准大气压=0.101325MPa Pa(帕)、MPa(兆帕)都是气压的国际制单位。通常所用的气压单位有帕(Pa)、毫米水银柱高(mm·Hg)、毫巴(mb)。它们之间的换算关系为:100帕=1毫巴≈3\/4毫米水银柱高。气象观测中常用的测量气压的仪器有水银气压表、空盒气压表、气压计。温度为0℃...

1mpa等于多少pa
10的六次方 100万 1000000Pa

丰台区15892085163: 2的100次方用pascal语言 -
蛮张那琦: 完整程序如下:{$apptype console} program exp; var s:string; i,j,k,n:integer; begin write('本程序高精度计算2的n次方,n='); readln(n); s:='1'; for i:=1 to n do begin k:=0; for j:=1 to length(s) do begin k:=k+(ord(s[j])-ord('0'))*2; s[j]:=chr(ord('0')+k mod...

丰台区15892085163: 【入门】2的100次方 用pascal语言 -
蛮张那琦: 就像题目所说的,计算机无法直接计算出来这个数,所以要用到“高精度”这个算法.根据题意,本题用的是乘法高精度.高精度的原理就是把数的每一位都当作是数组中的一个元素,然后分别将数组中的每一位去乘2,再进行进位,就像小学...

丰台区15892085163: PASCAL求2的n次方 -
蛮张那琦: program cf; var a:array[1..100]of longint; i,j,len,n:longint; begin fillchar(a,sizeof(a),0); readln(n); a[1]:=1;len:=1; for i:=1 to n do begin for j:=1 to len do a[j]:=a[j]*2; for j:=1 to len-1 do if a[j]>=10 then begin a[j+1]:=a[j] div 10+a[j+1]; a[j]:=a[j] mod 10; end; ...

丰台区15892085163: 一个初级pascal问题.求大神帮忙 -
蛮张那琦: var a:array[0..100] of integer; i,j,k:integer;begin fillchar(a,sizeof(a),0); a[0]:=1; for i:=1 to 200 do begin for j:=0 to 100 do a[j]:=a[j]*2; for j:=0 to 99 do begin k:=a[j]; a[j]:=k mod 10;a[j+1]:=a[j+1]+k div 10; end; end; j:=100;while (a[j]=0) and (j>0) do j:=j-1; ...

丰台区15892085163: Pascal 模拟编程 -
蛮张那琦: var n,i,j,m:longint; begin for m:=2 to 100 do begin n:=m; write(n,'='); i:=2; j:=0; while i <= n do if n mod i = 0 then begin j:=j+1; if j = 1 then begin n:=n div i; write(i); end; while (n mod i = 0) and (n > 0) do begin n:=n div i; write('*',i); end; end else i:=i+1; writeln; end; end.

丰台区15892085163: 编程计算并输出12+22+...+1002的值(pascal) -
蛮张那琦: var s,i:longint; begins:=0;i:=12;while i<=1002 dobegins:=s+i;i:=i+10; end; writeln(s); end. {so easy~~}

丰台区15892085163: 求n累加和(高精度)Pascal -
蛮张那琦: type rec=record s:longint; f:array[0..250] of longint; end; var s:string; l,i:longint; a,b:rec; procedure divi(var b:rec); var i,k:longint; begin k:=0; for i:=b.s downto 1 do begin k:=k*10+b.f[i];b.f[i]:=k div 2;k:=k mod 2; end; while (b.s>0) and (b.f[b.s]=0) do dec(...

丰台区15892085163: 如何用free pascal语言表示2的n次方
蛮张那琦: exp(x*ln(2))

丰台区15892085163: 100以内的素数pascal语言
蛮张那琦: 这是效率最高的程序: var a:array[2..100] of boolean; i,j:integer; begin writeln('2');a[2]:=true; for i := 3 to 100 do begin a[i]:= true; for j:= 2 to trunc(sqrt(i)) do if a[j] then if (i mod j =0) then begin a[i] := false;break;end;{j} if a[i] then writeln(i); end;{i} end.

丰台区15892085163: 用pascal语言编程: 用for循环语句,倒着算,算出1加到一百的和 -
蛮张那琦: 您好!程序如下:var i,s:longint; begin s:=0; for i:=100 downto 1 do s:=s+i; write(s); end.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网