Skip to content

rhazarian/big_integer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

34 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

big_integer

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–2

Π’ Π΄Π°Π½Π½ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ класс для Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ числа. ВрСбования ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

РСализация Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² классС big_integer ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ big_integer.h. Класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ:

  • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ число Π½ΡƒΠ»Π΅ΠΌ.
  • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ копирования, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ исходный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ копию ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ нСзависимо.
  • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΎΡ‚ int.
  • Explicit конструктор ΠΎΡ‚ std::string.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания.
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния.
  • АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: слоТСниС, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ° (ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ минус), ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ плюс.
  • Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ Π·Π° врСмя O(nm), Π³Π΄Π΅ n, m β€” Π΄Π»ΠΈΠ½Ρ‹ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ Π² Π±ΠΈΡ‚Π°Ρ….
  • Π”Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ остаток ΠΎΡ‚ дСлСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π·Π° врСмя O(nm), Π³Π΄Π΅ n β€” Π΄Π»ΠΈΠ½Π° дСлитСля Π² Π±ΠΈΡ‚Π°Ρ…, Π° m β€” Π΄Π»ΠΈΠ½Π° частного Π² Π±ΠΈΡ‚Π°Ρ….
  • ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ½Ρ‹ΠΉ/постфиксный ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚/Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚. (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ)
  • Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: ΠΈ, ΠΈΠ»ΠΈ, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ ΠΈΠ»ΠΈ, Π½Π΅.
  • Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ сдвиги.
  • Π”ΠΎΠ»ΠΆΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ глобальная функция std::string to_string(big_integer const&), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ строковоС прСдставлСниС числа.

РСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ класса Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ располоТСна Π² Ρ„Π°ΠΉΠ»Π΅ big_integer.cpp.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ сторонними Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… чисСл ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этого задания нСльзя.

Разряды числа Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ Π»ΠΈΠ±ΠΎ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ числами. ΠŸΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Π±ΠΈΡ‚Ρ‹ Π² ΠΈΡ… прСдставлСнии использовались. НапримСр, нСльзя Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ разряды ΠΊΠ°ΠΊ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ числа, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ младшиС 32-Π±ΠΈΡ‚Π° Π² Π½ΠΈΡ….

РСализация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΠΉ битности, которая СстСствСнна для Π΄Π°Π½Π½ΠΎΠ³ΠΎ прСдставлСния разрядов. НапримСр, нСльзя Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ разряды Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚ΠΈΠΊΠΈ, ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² систСмС счислСния с основаниСм 2.

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–3

Π’ Π΄Π°Π½Π½ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ числа со small-object ΠΈ copy-on-write оптимизациями.

Π”Π»ΠΈΠ½Π½ΠΎΠ΅ число Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ всСм трСбованиям задания 2 плюс:

  • Если Π² big_integer хранится число -2N ≀ a ≀ 2N - 1, big_integer Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ N Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, допустимыми ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΡŽΠ±Ρ‹Π΅ N β‰₯ 30.
  • Числа a < -2N ΠΈ a > 2N-1 Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π΅ большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° динамичСской памяти Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр big_integer.
  • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ копирования ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π° O(1) ΠΈ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ бСзопасности ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ nothrow.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages