主题:有几道题不会!!!!!!快来帮帮我!
yiyou55
[专家分:0] 发布于 2007-08-26 10:48:00
1、外出旅游的几位朋友决定次日早晨共分一筐苹果。天刚亮,第一个人醒来,他先拿了一个,再把筐里的八分之一拿走;第二个人醒来,先拿两个,再把筐里的八分之一拿走;第三个人醒来,先拿三个,再拿走筐里的八分之一;…每个人依次照此方法拿出各人的苹果,最后筐里的苹果全部拿完,他们每人所拿到的苹果数正巧一样多。求原先筐里的苹果数和人数。
2、某登山队员第一天登上山峰高度的一半又24米; 第二天登上余下高度的一半又24米;每天均如此。到第七天,距山顶还剩91米。求此山峰的高度?
3、给出某整数N,将N写成因数相乘的形式。如: N=12,输出: 12=1*2*2*3
4、Faibonacci数列前几项为: 0,1,1,2,3,5,8,…,其规律是从第三项起, 每项均等于前两项之和。求前30项, 并以每行5个数的格式输出。
5、求S= 1-1/2 +1/3-1/4+1/5-1/6+ ……(求前N项的和)
最后更新于:2007-08-26 10:53:00
回复列表 (共2个回复)
沙发
Matodied [专家分:7560] 发布于 2007-08-26 11:09:00
1、人数:8 - 1 = 7
苹果数:(8 - 1) * (8 - 1) = 49
2、
VAR
i, s: INTEGER;
BEGIN
s := 91;
FOR i:=1 TO 6 DO BEGIN
s := (s + 24) * 2;
END;
WRITELN(s);
END;
运行结果:8848
3、
FUNCTION isprime(m: INTEGER): BOOLEAN;
VAR
i: INTEGER; f: BOOLEAN;
BEGIN
f := TRUE;
IF m = 1 THEN f := FALSE;
FOR i:=2 TO TRUNC(SQRT(m)) DO BEGIN
IF m MOD i = 0 THEN BEGIN
f := FALSE;
BREAK;
END;
END;
isprime := f
END;
TYPE
arr = ARRAY[1..3000] OF INTEGER;
VAR
i, r, s, t: INTEGER; k: REAL; f1: BOOLEAN; a: arr;
BEGIN
READLN(s);
t := 1; r := 0;
REPEAT
INC(t);
f1 := isprime(t);
IF f1 THEN BEGIN
INC(r);
a[r] := t;
END;
UNTIL r = 3000;
IF isprime(s) THEN BEGIN
WRITELN(s, ' = ', s);
END ELSE BEGIN
k := s;
WRITE(s, ' = ');
i := 1;
REPEAT
IF k / a[i] = TRUNC(k / a[i]) THEN BEGIN
k := k / a[i];
IF k = 1 THEN BEGIN
WRITELN(a[i]);
END ELSE BEGIN
WRITE(a[i], ' * ');
END;
END ELSE BEGIN
INC(i);
END;
UNTIL k = 1;
END;
END.
质数表里只有前3000个质数,所以如果你输入的数过大,会显示出错信息。
板凳
Matodied [专家分:7560] 发布于 2007-08-26 11:19:00
4、
TYPE arr = ARRAY[1..30] OF LONGINT;
VAR
i: INTEGER; a: arr;
BEGIN
WRITE('1', ' 2'); a[1] := 1; a[2] := 2;
FOR i:=3 TO 30 DO BEGIN
a[i] := a[i - 1] + a[i - 2]; WRITE(a[i], ' ');
IF i MOD 5 = 0 THEN WRITELN;
END;
END.
5、
VAR
s, n, i, f: INTEGER;
BEGIN
READLN(n);
s := 1;
FOR i:=2 TO n DO BEGIN
IF i MOD 2 = 0 THEN f := -1 ELSE f := 1;
s := s + f * (1 / i);
END;
WRITELN(s);
END;
我来回复