|
!'SQR(NN)=P/Q*(1-L/M)^(-1/2)
PUBLIC NUMERIC KETA,EPS,SIGN,NN
OPTION BASE 0
LET KETA=2500
LET EPS=0
LET BIAS=0
LET SIGN=-BIAS-1
LET KETA=KETA+EPS
DIM A(-BIAS-1 TO KETA),S(-BIAS-1 TO KETA),T(-BIAS-1 TO KETA)
LET A(0)=1
LET S(0)=1
LET N=1
READ NN,P,Q,L,M
DATA 2 , 1772 , 1253 , 34 , 3140018
DATA 3 , 2146 , 1239 , 47 , 4605363
DATA 5 , 521 , 233 , 4 , 271445
DATA 6 , 703 , 287 , 5 , 494214
DATA 7 , 1643 , 621 , 38 , 2699487
DATA 8 , 2011 , 711 , 47 , 4044168
DATA 10 , 1793 , 567 , 41 , 3214890
DATA 11 , 859 , 259 , 10 , 737891
DATA 12 , 1784 , 515 , 44 , 3182700
DATA 13 , 1435 , 398 , 27 , 2059252
DATA 14 , 2013 , 538 , 47 , 4052216
DATA 15 , 945 , 244 , 15 , 893040
DATA 17 , 268 , 65 , 1 , 71825
DATA 18 , 2011 , 474 , 47 , 4044168
DATA 19 , 1081 , 248 , 15 , 1168576
DATA 20 , 1042 , 233 , 16 , 1085780
DATA 21 , 1943 , 424 , 47 , 3775296
DATA 22 , 1318 , 281 , 18 , 1737142
DATA 23 , 1597 , 333 , 38 , 2550447
DATA 24 , 1406 , 287 , 20 , 1976856
DATA 26 , 1494 , 293 , 38 , 2232074
DATA 27 , 2146 , 413 , 47 , 4605363
DATA 28 , 1053 , 199 , 19 , 1108828
DATA 29 , 797 , 148 , 7 , 635216
DATA 30 , 1561 , 285 , 29 , 2436750
DATA 31 , 1069 , 192 , 23 , 1142784
DATA 32 , 956 , 169 , 16 , 913952
DATA 33 , 787 , 137 , 8 , 619377
DATA 34 , 1207 , 207 , 17 , 1456866
DATA 35 , 775 , 131 , 10 , 600635
DATA 37 , 809 , 133 , 12 , 654493
DATA 38 , 863 , 140 , 31 , 744800
DATA 39 , 1861 , 298 , 35 , 3463356
DATA 40 , 955 , 151 , 15 , 912040
DATA 41 , 1255 , 196 , 31 , 1575056
DATA 42 , 1847 , 285 , 41 , 3411450
DATA 43 , 400 , 61 , 3 , 160003
DATA 44 , 1718 , 259 , 40 , 2951564
DATA 45 , 1563 , 233 , 36 , 2443005
DATA 46 , 1838 , 271 , 42 , 3378286
DATA 47 , 1282 , 187 , 19 , 1643543
DATA 48 , 1157 , 167 , 23 , 1338672
DATA 50 , 1195 , 169 , 25 , 1428050
DATA 51 , 1364 , 191 , 35 , 1860531
DATA 52 , 1435 , 199 , 27 , 2059252
DATA 53 , 182 , 25 , 1 , 33125
DATA 54 , 2109 , 287 , 45 , 4447926
DATA 55 , 1194 , 161 , 19 , 1425655
DATA 56 , 2013 , 269 , 47 , 4052216
DATA 57 , 1744 , 231 , 41 , 3041577
DATA 58 , 1744 , 229 , 42 , 3041578
DATA 59 , 1951 , 254 , 43 , 3806444
DATA 60 , 945 , 122 , 15 , 893040
DATA 61 , 1687 , 216 , 47 , 2846016
DATA 62 , 937 , 119 , 13 , 877982
DATA 63 , 1643 , 207 , 38 , 2699487
DATA 65 , 1685 , 209 , 40 , 2839265
DATA 66 , 983 , 121 , 17 , 966306
DATA 67 , 221 , 27 , 2 , 48843
DATA 68 , 536 , 65 , 4 , 287300
DATA 69 , 1138 , 137 , 17 , 1295061
DATA 70 , 845 , 101 , 45 , 714070
DATA 71 , 969 , 115 , 14 , 938975
DATA 72 , 2011 , 237 , 47 , 4044168
DATA 73 , 1555 , 182 , 27 , 2418052
DATA 74 , 757 , 88 , 7 , 573056
DATA 75 , 892 , 103 , 11 , 795675
DATA 76 , 1081 , 124 , 15 , 1168576
DATA 77 , 974 , 111 , 41 , 948717
DATA 78 , 892 , 101 , 14 , 795678
DATA 79 , 1271 , 143 , 30 , 1615471
DATA 80 , 474 , 53 , 44 , 224720
DATA 82 , 498 , 55 , 46 , 248050
DATA 83 , 1321 , 145 , 34 , 1745075
DATA 84 , 1943 , 212 , 47 , 3775296
DATA 85 , 673 , 73 , 36 , 452965
DATA 86 , 1085 , 117 , 29 , 1177254
DATA 87 , 513 , 55 , 6 , 263175
DATA 88 , 469 , 50 , 39 , 220000
DATA 89 , 783 , 83 , 32 , 613121
DATA 90 , 1793 , 189 , 41 , 3214890
DATA 91 , 849 , 89 , 10 , 720811
DATA 92 , 681 , 71 , 11 , 463772
DATA 93 , 974 , 101 , 17 , 948693
DATA 94 , 1018 , 105 , 26 , 1036350
DATA 95 , 731 , 75 , 14 , 534375
DATA 96 , 921 , 94 , 15 , 848256
DATA 97 , 1172 , 119 , 33 , 1373617
DATA 98 , 1772 , 179 , 34 , 3140018
DATA 99 , 587 , 59 , 50 , 344619
DO
MAT A=(2*L*N-L)*A
FOR I=0 TO KETA-1
LET R=A(I)-INT(A(I)/2/N/M)*(2*N*M)
LET A(I)=INT(A(I)/2/N/M)
LET A(I+1)=A(I+1)+R*10000
NEXT I
LET A(KETA)=INT(A(KETA)/2/N/M)
MAT S=S+A
FOR I=KETA TO 0 STEP-1
IF S(I)>=10000 THEN
LET R=INT(S(I)/10000)
LET S(I)=S(I)-R*10000
LET S(I-1)=S(I-1)+R
END IF
NEXT I
LET FL=0
FOR I=0 TO KETA
IF S(I)<>T(I)THEN
LET T(I)=S(I)
LET FL=1
LET N=N+1
EXIT FOR
END IF
NEXT I
IF FL=0 THEN EXIT DO
LOOP
MAT S=P*S
FOR I=KETA TO 0 STEP-1
IF S(I)>=10000 THEN
LET R=INT(S(I)/10000)
LET S(I)=S(I)-R*10000
LET S(I-1)=S(I-1)+R
END IF
NEXT I
FOR I=0 TO KETA-1
LET R=S(I)-INT(S(I)/Q)*Q
LET S(I)=INT(S(I)/Q)
LET S(I+1)=S(I+1)+R*10000
NEXT I
LET S(KETA)=INT(S(KETA)/Q)
CALL DISPLAY(S,"")
END
EXTERNAL SUB DISPLAY(X(),N$)
IF N$="" THEN
OPEN #1:TEXTWINDOW1
ELSE
OPEN #1:NAME N$
END IF
ERASE #1
FOR K=-BIAS TO 0
IF X(K)<>0 THEN EXIT FOR
NEXT K
IF X(SIGN)=-1 THEN PRINT #1:"- ";
IF K>=0 THEN
LET K=0
PRINT #1:STR$(X(0));"."
ELSE
PRINT #1:STR$(X(K));
FOR I=K+1 TO 0
LET A$=A$&RIGHT$("000"&STR$(X(I)),4)
IF LEN(A$)=100 THEN
PRINT #1:A$
LET A$=""
END IF
NEXT I
IF LEN(A$)>0 THEN
PRINT #1:A$;"."
LET A$=""
END IF
END IF
LET S=0
FOR I=1 TO KETA-EPS
LET A$=A$&RIGHT$("000"&STR$(X(I)),4)
IF LEN(A$)=100 THEN
LET S=S+100
FOR J=1 TO 10
PRINT #1:LEFT$(A$,10);" ";
IF J=5 THEN PRINT #1:" ";
LET A$=RIGHT$(A$,LEN(A$)-10)
NEXT J
PRINT #1:":";S
LET A$=""
IF MOD(S,1000)=0 THEN PRINT #1
END IF
NEXT I
IF LEN(A$)>0 THEN
LET S=S+LEN(A$)
LET A$=A$&REPEAT$(" ",10)
FOR J=1 TO 9
PRINT #1:RTRIM$(LEFT$(A$,10));" ";
IF J=5 THEN PRINT #1:" ";
LET A$=RIGHT$(A$,LEN(A$)-10)
IF RTRIM$(A$)="" THEN EXIT FOR
NEXT J
IF A$<>"" THEN PRINT #1:A$
END IF
CLOSE #1
END SUB
|
|