pascal 高精度紧急求助

来源:百度知道 编辑:UC知道 时间:2024/05/08 15:27:53
1、蜜蜂路线(work1.pas)
[问题描述]
一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房M开始爬到蜂房N,M<N<30000,有多少种爬行路线?

如输入:1 14
则输出:377
2、3×2n的骨牌问题
rk2.pas)
[问题描述]
已知3×2n个棋盘格子,试求用火柴棒覆盖所有格子的方法(一根火柴棒可覆盖2个格子)。
如n=1时,有如下3种覆盖方法:
输入:n
输出:用火柴棒覆盖所有3×2n格子的方案数。
输入样例:1
输出样例:3
那位大哥直接给个程序吧
有追加分

s[n]=4*s[n-1]-s[n-2]
自己编高精度
关于(1)s=n c 1+n-1 c 2+n-2 c 3……………………+n c n 或
n+1 c n-1(n的奇偶性不同)
第二个的程序(c++的)
#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");
}