将c语言转化为pascal 高手进

来源:百度知道 编辑:UC知道 时间:2024/05/15 17:43:44
#include <stdio.h>
#include <stdlib.h>
#define maxlen 1000
using namespace std;
long u,n,j,i,la,lb,a[maxlen],b[maxlen],c[maxlen];
main()
{
scanf ("%d",&n);
a[1]=1;
c[1]=1;
for (i=1;i<=n;i++)
{for (j=1;j<=maxlen;j++) b[j]=a[j];
for (j=1;j<=maxlen;j++) a[j]=4*a[j];
// for (j=1;j<=maxlen;j++)
// {a[j+1]+=a[j]/10;
// a[j]=a[j]%10;}
for (j=1;j<=maxlen;j++)
{a[j]=a[j]-c[j];
a[j+1]+=a[j]/10;
a[j]=a[j]%10;}
for (j=1;j<=maxlen;j++) c[j]=b[j];
}
j=maxlen;
while (a[j]==0) j--;
for (i=j;i>=1;i--) printf ("%d",a[i]);
system("pause");
}

题目为
已知3×2n个棋盘格子,试求用火柴棒覆盖所有格子的方法(一根火柴棒可覆盖2个格子)。

输入:n
输出:用火柴棒覆盖所有3×2n格子的方案数。
输入样例:1
输出样例:3

输出 n 与方案的关系

program question;
const maxlen=1000;
type
arr=array[1..maxlen] of longint;
var u,n,j,i,la,lb:longint;
a,b,c:arr;
begin
read(n);
a[1]:=1;
c[1]:=1;
for i:=1 to n do
begin
for j:=1 to maxlen do b[j]:=a[j];
for j:=1 to maxlen do a[j]:=4*a[j];
for j:=1 to maxlen do
begin
a[j]:=a[j]-c[j];
a[j+1]:=a[j+1]+a[j] div 10;
a[j]:=a[j] mod 10;
end;
for j:=1 to maxlen do c[j]:=b[j];
end;
j:=maxlen;
while a[j]=0 do
begin
j:=j-1;
end;
for i:=j downto 1 do
begin
write(a[i]);
end;
end.