pascal题目,急!!

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:45:29
2、 是一个很大的数,计算机无法直接计算出来,编程求该式的准确结果(从最高位到最低位第一位都要打印出来)

3、编程实现两个高精度实数加法,两数分别由键盘输入,均不超过40位(含小数点)。
5、八皇后问题是一个古老而著名的问题。十九世纪数学家高斯提出。在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,编程求出有多少种摆法。

随便哪一题都可以,急!!!

5.回溯
或者用位运算加速
给个位运算版(吓死你的同学):
procedure test(row,ld,rd:longint);
var
pos,p:longint;
begin

{ 1} if row<>upperlim then
{ 2} begin
{ 3} pos:=upperlim and not (row or ld or rd);
{ 4} while pos<>0 do
{ 5} begin
{ 6} p:=pos and -pos;
{ 7} pos:=pos-p;
{ 8} test(row+p,(ld+p)shl 1,(rd+p)shr 1);
{ 9} end;
{10} end
{11} else inc(sum);

end;

3.高精度加法比较简单,注意处理进位就行了:
开了a、b、c三个数组,a、b是输入的要算的数,c是返回的结果。按惯例,数组倒序存字串,就是说a[1]表示的个位。

这是关键部分:
c[i]:=c[i]+a[i]+b[i];
c[i+1]:=c[i] div 10;
c[i]:=c[i] mod 10;
其它的我相信你自己打得出来

5.代码
var a:array [1..8] of integer;
b,c,d:array [-7..16] of integer;
t,i,j,k:integer;
procedure print;
begin
t:=t+1;
write(t,' ');
for k:=1 to 8 do write(a[k],' ');
writeln;
end;

pro