| 1 | PROGRAM EEEEEEEEEEEEEE(INPUT,OUTPUT); |
| 2 | |
| 3 | CONST BASE=1000000; |
| 4 | |
| 5 | VAR N,I,FIRST,LAST,NUMBEROFDIGITS, |
| 6 | CARRY,DIGIT,POWER: INTEGER; |
| 7 | A,S: ARRAY[1..501] OF INTEGER; |
| 8 | |
| 9 | BEGIN READ(NUMBEROFDIGITS); |
| 10 | FIRST := 1; LAST := NUMBEROFDIGITS DIV 6 + 1; |
| 11 | N := 2; |
| 12 | A[1] := 500000; S[1] := 500000; |
| 13 | FOR I := 2 TO LAST DO |
| 14 | BEGIN A[I] := 0; S[I] := 0 END; |
| 15 | |
| 16 | REPEAT N := N + 1; |
| 17 | CARRY := 0; |
| 18 | FOR I := FIRST TO LAST DO |
| 19 | BEGIN |
| 20 | DIGIT := CARRY*BASE + A[I]; |
| 21 | A[I] := DIGIT DIV N; |
| 22 | CARRY := DIGIT MOD N |
| 23 | END; |
| 24 | IF A[FIRST] = 0 THEN FIRST := FIRST + 1; |
| 25 | |
| 26 | CARRY := 0; |
| 27 | I := LAST; |
| 28 | WHILE (FIRST<=I) OR (CARRY<>0) DO |
| 29 | BEGIN |
| 30 | DIGIT := S[I] + A[I] + CARRY; CARRY := 0; |
| 31 | IF DIGIT >= BASE THEN BEGIN |
| 32 | DIGIT := DIGIT - BASE; |
| 33 | CARRY := 1 |
| 34 | END; |
| 35 | S[I] := DIGIT; |
| 36 | I := I - 1 |
| 37 | END |
| 38 | UNTIL FIRST>LAST; |
| 39 | |
| 40 | WRITE("E = 2."); |
| 41 | FOR I := 1 TO LAST DO |
| 42 | BEGIN |
| 43 | DIGIT := S[I]; POWER := BASE; |
| 44 | REPEAT POWER := POWER DIV 10; |
| 45 | WRITE(DIGIT DIV POWER :1); |
| 46 | DIGIT := DIGIT MOD POWER |
| 47 | UNTIL POWER=1; |
| 48 | IF I MOD 12 = 0 THEN BEGIN WRITELN; WRITE(" ":6) END |
| 49 | END; |
| 50 | WRITELN |
| 51 | END. |