, , , , " " . , - - , .
, . , , . , . , .
. , [email protected].
1.
" " , , - .
"" , . ( " ").
, . , .. """ " ("", 4, 2000, . 19-23) , 10000- .
, (), .
1)
2)
1) .
2) .
3) .
4) , , .
5)* .
..
"" . "" "" . , , , . , , Turbo Pascal, 7.0. .
|
|
(Integer, Word, LongInt) , (, ). , . , (n! = 1 * 2 * 3 * * n), Integer 7! = 5040, LongInt 12! = 479001600. , , , . , , ..
. .
( , , ). ( ) "" , , .. , .. "" :
Const MNax = 2000; Type Digit = 0..9; DlChislo = Array[1..Nmax] Of Digit;:
1) "" ;
2) "" ;
3) "" ;
4) .
. . , . "" , .. .
{ , , ; OK True, , , false} Procedure Translate(S: String; Var A: DlChislo; Var OK: Boolean); Var I: Word; Begin Zero(A); I:= Length(S); OK:= True; While (I >= 1) And OK Do Begin If S[I] In ['0'..'9'] Then A[Length(S)- I + 1]:= Ord(S[I]) - 48 Else OK:= False; I:= I - 1 End End;Zero(A), . :
|
|
, , ( ) . .
, .
{ } Function Dlina(C: DlChislo): Integer; Var I: Integer; Begin I:= NMax; While (I > 1) And (C[I] = 0) Do I:= I - 1; Dlina:= I End;: , , , . , , , .
, , , . "", , , .. , .
{ . A, B , C } Procedure Multiplication(A, B: DlChislo; Var C: DlChislo); Var I, J: Integer; P: Digit; VspRez: 0..99; Begin Zero(C); For I:= 1 To Dlina(A) Do { } Begin P:= 0; { } For J:= 1 To Dlina(B) Do { } Begin VspRez:= A[I] * B[J] + P + C[I + J - 1]; C[I + J - 1]:= VspRez Mod 10; { I + J - 1} P:= VspRez Div 10 { } End; C[I + J]:= P { , } End End;.
Program DlUmn;Const NMax = 2000;Type Digit = 0..9; DlChislo = Array[1..Nmax] Of Digit;Var S: String; M, N, R, F: DlChislo; I, MaxF: Word; Logic: Boolean;{ }Procedure Zero(Var A: DlChislo);Var I: Integer; Begin For I:= 1 To NMax Do A[I]:= 0; End;{ }Function Dlina(C: DlChislo): Integer;Var I: Integer; Begin I:= NMax; While (I > 1) And (C[I] = 0) Do I:= I - 1; Dlina:= I End;{ }Procedure Print(A: DlChislo);Var I: Integer; Begin For I:= Dlina(A) DownTo 1 Do Write(A[I]: 1); WriteLn End;{ }Procedure Translate(S: String; Var A: DlChislo; Var OK: Boolean);Var I: Word; Begin Zero(A); I:= Length(S); OK:= True; While (I >= 1) And OK Do Begin If S[I] In ['0'..'9'] Then A[Length(S) - I+ 1]:= Ord(S[I]) - 48 Else OK:= False; I:= I - 1 End End;Procedure Multiplication(A, B: DlChislo; Var C: DlChislo);Var I, J: Integer; P: Digit; VspRez: 0..99; Begin Zero(C); For I:= 1 To Dlina(A) Do Begin P:= 0; For J:= 1 To Dlina(B) Do Begin VspRez:= A[I] * B[J] + P + C[I + J - 1]; C[I + J - 1]:= VspRez Mod 10; P:= VspRez Div 10 End; C[I + J]:= P End End;{ }Begin Repeat { , } Write(' : '); ReadLn(S); Translate(S, M, Logic) Until Logic; Repeat Write(' : '); ReadLn(S); Translate(S, N, Logic) Until Logic; Multiplication(M, N, R); Print(R)End.Print . .
. , , .
|
|
, .
Begin MaxF:= 810; Zero(F); F[1]:= 1; For I:= 1 To MaxF Do Begin Str(I, S); { I S} Translate(S, M, Logic); Multiplication(F, M, F); Print(F); WriteLn(' ', I: 4, ' ', Dlina(F), ' .') End End., 810! , 1999 . . 5 (IBM PC Pentium100).
. , , . .. .. [7]. , ( ), . , 1989-99 .
1. ( 20).
2. , 20.
3. an, a > MaxInt, n > 10.
4. 264 1, .
5. 100!.
6. n - (n > 40).
7. n!, n > 12.
8. nn, n > 10.
9. a b, a, b .
10. 100! + 2100.
11. 100! 2100.
12. 7123.
13. 211213 1 ?
14. 2200.
15. m - n (m, n > 20).
16. , am, bn (a, b <= 40000; m, n <= 10).
17. n m (n >= 50).
18. n - (n > 20).
19. (n!)! (n >= 3).
20. 1! + 2! + 3! +... + n! n > 10.
21.
n > 10. P / Q, P, Q .
22. (nn)! n >= 3.
23. n 1, k, k 2, k 3,..., kn (n > MaxInt). : n .
24. n , k (n > MaxInt). : n .
25. 12 + 22 + 32 + + n 2 (n >= 20000).
26. 1 n + 2 n + 3 n +... + nn (n >= 10).
|
|
27. , 1011.
28. anxn + an - 1 xn - 1 +... + a 1 x + a 0, ai x 1011.
29. m n (m, n >= 1011).
30. , m n (m, n >= 1011) .
31. , 219936 * (219937 1) , .. , .
32. " ". , , :
1) 5;
2) 5 , 5 .
33. ,
an + 1 = 7 an mod 2023, a 1 = 1,
x mod y x y. , an 1 <= n <= 1000000000000000000000.
34.
, an 1 <= n <= 150.
. n = 58 an = 10359022039470231387111424.
35. ( 20) , , .
36. 11.
37. . Q N. Q N , , , 100. Q .
, Q N, Q * N.
.
: 0.1(6)
: 2
: 0.(3)
1. .., .., .., .. . .: , 1988.
2. . . . , 1991.
3. .. . .: , 1989.
4. .. . . . .: , 1991.
5. . . .: , 1992.
6. .., .. . : - , 1998.
7. .., .. . . .: , 1990.
8. .. . : - , 1998.