program a1;
var i,n,a:longint;
s:real;
begin
readln(n);
a:=1;
for i:=1 to n do
begin
s:=s+a*(1/i);
a:=-a;
end;
writeln(s:2:5);
end.
2.
FUNCTION gjdadd(x, y: STRING): STRING;
TYPE arr = ARRAY[1..127] OF INTEGER;
VAR
a, b, s: arr; z, zz: STRING[126];
i, lx, ly, l, k, t: INTEGER;
BEGIN
FOR i:=1 TO 127 DO BEGIN
a[i] := 0; b[i] := 0; s[i] := 0;
END;
lx := LENGTH(x); ly := LENGTH(y);
IF lx > ly THEN l := lx ELSE l := ly;
FOR i:=1 TO lx DO VAL(COPY(x, lx + 1 - i, 1), a[i], k);
FOR i:=1 TO ly DO VAL(COPY(y, ly + 1 - i, 1), b[i], k);
FOR i:=1 TO l DO BEGIN
s[i] := s[i] + a[i] + b[i];
IF s[i] >= 10 THEN BEGIN
s[i + 1] := 1; s[i] := s[i] MOD 10;
END;
END;
IF s[l + 1] = 0 THEN t := l ELSE t := l + 1;
z := '';
FOR i:=t DOWNTO 1 DO BEGIN
STR(s[i], zz); z := z + zz;
END;
gjdadd := z;
END;
VAR
i: INTEGER;
a, b, c: STRING;
BEGIN
a := '0'; b := '1'; WRITE(a, ' ', b, ' ');
FOR i:=3 TO 100 DO BEGIN
c := gjdadd(a, b); WRITELN(c, ' ');
a := b; b := c;
END;
END.
{當100項時,超過了qword的範圍,只能用高精度}
3.
program exLoop1_1;
var
x, i : integer;
begin
x := 1;
for i := 2 to 10 do
x := (x+1)*2;
writeln('They had ', x, ' jujubes ago.');
readln;
end.
program exLoop1_2;
var
x, i, temp : integer;
begin
x := 1024; // 據題意原來的棗子數肯定 >= 2的10次方,即 1024
while x < 2048 do
begin
temp := x;
for i := 1 to 9 do
temp := temp div 2-1;
if temp = 1 then break;
x := x+2;
end;
writeln('They had ', x, ' jujubes ago.');
readln;
end.
4.
Var a, b: Array[1..100] OF Longint;
k, temp, i, j, n, t, l: longint;
Function check(i: Longint): Boolean;
Varj: longint;
Begin
check := true;
for j:=2 To i-1 DO
if i mod j = 0 Then Begin check := false;
Exit;
End;
End;
begin
For i:=2 TO 100 Do
if check(i) Then Begin
inc(t);
a[t] := i;
End;
For i:=2 To 100 Do
Begin
n := i;
l := 0;
while n <> 1 Do
Begin
for j:=1 TO t Do
if n mod a[j] = 0 THen Begin
inc(l);
b[l] := a[j];
n := n Div a[j];
End;
End;
For j:=1 To l-1 DO
for k:=j + 1 To l DOif b[j] > b[k] Then Begin temp := b[j];
b[j] := b[k];
b[k] := temp;
End;
Write(i, ' = ', b[1]);
For j:=2 To l DO Write('*', b[j]);
Writeln;
End;
End.
5.
var i,j,sum:integer;
begin
for i:=2 to 1000 do begin
sum:=0;
for j:=1 to (i div 2) do
if i mod j=0 then inc(sum,j);
if sum=i then writeln(i);
end;
end.
7.
PROGRAM T75_026;
VAR
n:integer;
BEGIN
REPEAT
read(n);
UNTIL n>1;
REPEAT
IF odd(n)
THEN BEGIN
n:=3*n+1;
writeln(n);
END
ELSE BEGIN
n:=trunc(n/2);
writeln(n);
END
UNTIL n=1;
END.