var a,b,c:array[1..5000]of longint;
w,w1,w2,i,n,j:longint;
procedure as;
var i,x:longint;
begin
x:=0;
if w>w1 then w2:=w
else w2:=w1;
for i:=1 to w2 do
begin
c[i]:=a[i]+b[i]+x;
x:=c[i] div 10;
c[i]:=c[i] mod 10;
end;
while x>0 do begin
inc(w2);
c[w2]:=x mod 10;
x:=x div 10;
end;
end;
procedure asd(k:longint);
var i,x:longint;
begin
x:=0;
for i:=1 to w do begin
a[i]:=a[i]*k+x;
x:=a[i] div 10;
a[i]:=a[i] mod 10;
end;
while x>0 do begin
inc(w);
a[w]:=x mod 10;
x:=x div 10;
end;
end;
begin
readln(n);
w:=1;
a[1]:=1;
w1:=1;
b[1]:=2;
for i:=3 to n do begin
as;
b:=c;
w:=1;
a[1]:=1;
for j:=1 to i do asd(j);
end;
as;
for i:=w2 downto 1 do write(c[i]);
end.
program jiechenghe;
var
i,j,n:intege;
num:longint;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to i do
j:=j*j;
num:=num+j;
end;
writeln(num);
readln;
end.
double都容不下的结果。
可能要用byte数组来存储结果。
很麻烦的。
呵呵,1000以内阶乘,够大的数据啊,longint不够吧
就是阶乘+高精阿