pascal问题 一个递推数列,输入n,输出f[n]; n
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/11 00:14:13
pascal问题 一个递推数列,输入n,输出f[n]; n<=4000000000000
F[0]=1
F[1]=1
F[n]=F[n div 2]+F[n div 3]+F[n div 5]+F[n div 7]
F[0]=1
F[1]=1
F[n]=F[n div 2]+F[n div 3]+F[n div 5]+F[n div 7]
数据太大了吧……
只好用高精度了.
下面是高精度的代码:
procedure ReadData( var t :hp );
var i,len :integer; st :string;
begin
readln( st );
fillchar( t,sizeof(t),0 );
len := length( st );
for i:=len downto 1 do t[len-i+1]:=ord(st[i]) - 48;
t[0] := len;
end;
procedure plus( a,b:hp; var c:hp);
var i,len:integer; d,jw :longint;
begin
fillchar(c,sizeof(c),0);
if a[0]>b[0] then len:=a[0] else len:=b[0];
jw := 0;
for i:=1 to len do
begin
d := a[i]+b[i]+jw;
c[i] := d mod 10;
jw := d div 10;
end;
if jw>0 then begin inc(len); c[len]:=jw; end;
c[0]:=len;
end;
procedure devide(a:hp;b:integer; var c:hp; var d:integer);
{c:=a div b; d:= a mod b}
var i,len:integer;
begin
fillchar(c,sizeof(c),0);
len:=a[0]; d:=0;
for i:=len downto 1 do
begin
d:=d*10+a[i];
c[i]:=d div b;
d:=d mod b;
end;
while (len>1) and (c[len]=0) do dec(len);
c[0]:=len;
end;
procedure print( t :hp );
var i :integer;
begin
for i:=t[0] downto 1 do write( t[i] );
writeln;
end;
Readdata:读入数据
Plus:计算 c:=a+b
Devide:计算 c:=a div b,d:=a mod b
Print:打印
只好用高精度了.
下面是高精度的代码:
procedure ReadData( var t :hp );
var i,len :integer; st :string;
begin
readln( st );
fillchar( t,sizeof(t),0 );
len := length( st );
for i:=len downto 1 do t[len-i+1]:=ord(st[i]) - 48;
t[0] := len;
end;
procedure plus( a,b:hp; var c:hp);
var i,len:integer; d,jw :longint;
begin
fillchar(c,sizeof(c),0);
if a[0]>b[0] then len:=a[0] else len:=b[0];
jw := 0;
for i:=1 to len do
begin
d := a[i]+b[i]+jw;
c[i] := d mod 10;
jw := d div 10;
end;
if jw>0 then begin inc(len); c[len]:=jw; end;
c[0]:=len;
end;
procedure devide(a:hp;b:integer; var c:hp; var d:integer);
{c:=a div b; d:= a mod b}
var i,len:integer;
begin
fillchar(c,sizeof(c),0);
len:=a[0]; d:=0;
for i:=len downto 1 do
begin
d:=d*10+a[i];
c[i]:=d div b;
d:=d mod b;
end;
while (len>1) and (c[len]=0) do dec(len);
c[0]:=len;
end;
procedure print( t :hp );
var i :integer;
begin
for i:=t[0] downto 1 do write( t[i] );
writeln;
end;
Readdata:读入数据
Plus:计算 c:=a+b
Devide:计算 c:=a div b,d:=a mod b
Print:打印
pascal问题 一个递推数列,输入n,输出f[n]; n
pascal程序设计 输入一个整数n,n
pascal语言:输入一个正整数n,输出n以内所以素数
pascal 输入一个整数n,请你判断n是否是质数.输入一个数n,如果是质数则输出yes 否则输出no 用break语句
pascal输入一个n位的正整数,输出由这n个数字组成的最大正整数.
用pascal语言编程:输出n(n
pascal编程给出一个n,求前n个奇数的总和 输入 一行,一个整数n 输出 一行,表示总和
pascal问题输入n行m列数据,斜线输出.【输入说明】 第一行是n,以下是n行n列数字矩阵,以上所有数字均为
pascal编程求1+2+3+..+n的值求1+2+3+..+n的值 输入 一个整数n 输出 一个整数,表示1~n这n个
求阶乘问题.要求定义函数fact(n)计算n!,主函数中输入一个正整数n,输出n!要求函数fact(n)分别采用递归…
pascal高精度拆分整数 【问题描述】 输入一个正整数N(不超过一百位),如果N是偶数,则拆分N的各个数字相
求助一道pascal高精度乘法题:输入两个正整数m、n,输出他们的积.( 1