<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://acm.khpnets.info/w39/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0</id>
	<title>Модульная арифметика - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://acm.khpnets.info/w39/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0"/>
	<link rel="alternate" type="text/html" href="https://acm.khpnets.info/w39/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0&amp;action=history"/>
	<updated>2026-05-13T11:41:47Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://acm.khpnets.info/w39/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0&amp;diff=2769&amp;oldid=prev</id>
		<title>Ctrlalt: Новая страница: «== Основные арифметические операции == * (A + B) % MOD = (A % MOD + B % MOD) % MOD * (A - B) % MOD = ((A % MOD - B % MOD) % MOD + MO...»</title>
		<link rel="alternate" type="text/html" href="https://acm.khpnets.info/w39/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0&amp;diff=2769&amp;oldid=prev"/>
		<updated>2022-04-02T17:59:18Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «== Основные арифметические операции == * (A + B) % MOD = (A % MOD + B % MOD) % MOD * (A - B) % MOD = ((A % MOD - B % MOD) % MOD + MO...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Основные арифметические операции ==&lt;br /&gt;
* (A + B) % MOD = (A % MOD + B % MOD) % MOD&lt;br /&gt;
* (A - B) % MOD = ((A % MOD - B % MOD) % MOD + MOD) % MOD&lt;br /&gt;
* (A * B) % MOD = ((A % MOD) * (B % MOD)) % MOD&lt;br /&gt;
&lt;br /&gt;
== «Деление» и нахождение обратного элемента ==&lt;br /&gt;
* (A / B) % MOD = ((A % MOD) * B&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt;) % MOD&lt;br /&gt;
:* Если MOD простой: B&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; = B&amp;lt;sup&amp;gt;MOD - 2&amp;lt;/sup&amp;gt; % MOD&lt;br /&gt;
:* Если B и MOD взаимно просты: B&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; = X, где gcdex(B % MOD, MOD, X, Y) == 1&lt;br /&gt;
:* Если B и MOD не взаимно просты, решения не существует.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 class ModInt {&lt;br /&gt;
     long long value;&lt;br /&gt;
     static const long long mod = 1e9 + 7;&lt;br /&gt;
 &lt;br /&gt;
     static long long gcdex(long long a, long long b, long long &amp;amp;x, long long &amp;amp;y) {&lt;br /&gt;
         if (!b) {&lt;br /&gt;
             x = 1;&lt;br /&gt;
             y = 0;&lt;br /&gt;
             return a;&lt;br /&gt;
         }&lt;br /&gt;
         long long x1, y1, d = gcdex(b, a % b, x1, y1);&lt;br /&gt;
         x = y1;&lt;br /&gt;
         y = x1 - a / b * y1;&lt;br /&gt;
         return d;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
     ModInt(long long value = 0) : value((value % mod + mod) % mod) {}&lt;br /&gt;
 &lt;br /&gt;
     ModInt operator + (const ModInt &amp;amp;that) const {&lt;br /&gt;
         return value + that.value;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     ModInt operator - (const ModInt &amp;amp;that) const {&lt;br /&gt;
         return value - that.value;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     ModInt operator * (const ModInt &amp;amp;that) const {&lt;br /&gt;
         return value * that.value;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     ModInt operator / (const ModInt &amp;amp;that) const {&lt;br /&gt;
         long long x, y;&lt;br /&gt;
         gcdex(that.value, mod, x, y);&lt;br /&gt;
         return value * x;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     bool canDivide(const ModInt &amp;amp;that) const {&lt;br /&gt;
         long long x, y;&lt;br /&gt;
         return that.value &amp;amp;&amp;amp; gcdex(that.value, mod, x, y) == 1;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     friend istream &amp;amp;operator &amp;gt;&amp;gt; (istream &amp;amp;in, ModInt &amp;amp;m) {&lt;br /&gt;
         long long value;&lt;br /&gt;
         in &amp;gt;&amp;gt; value;&lt;br /&gt;
         m = ModInt(value);&lt;br /&gt;
         return in;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     friend ostream &amp;amp;operator &amp;lt;&amp;lt; (ostream &amp;amp;out, const ModInt &amp;amp;m) {&lt;br /&gt;
         return out &amp;lt;&amp;lt; m.value;&lt;br /&gt;
     }&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
Теория:&lt;br /&gt;
* [http://e-maxx.ru/algo/reverse_element e-maxx.ru — Обратный элемент в кольце по модулю]&lt;br /&gt;
* [https://cp-algorithms.com/algebra/module-inverse.html cp-algorithms.com — Modular Inverse]&lt;br /&gt;
* [https://brestprog.by/topics/modulo/ brestprog.by — Операции по модулю]&lt;br /&gt;
* algorithmica.org — Модульная арифметика, обратный элемент: [https://wiki.algocode.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0 1] [https://algorithmica.org/ru/reciprocal 2] [https://ru.algorithmica.org/cs/modular/reciprocal/ 3] [https://wiki.algocode.ru/index.php?title=%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE_%D0%BB%D1%8E%D0%B1%D0%BE%D0%BC%D1%83_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8E_%D0%B2_2_%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BA%D0%B8 4]&lt;br /&gt;
* [https://usaco.guide/gold/modular?lang=cpp usaco.guide — Modular Arithmetics]&lt;br /&gt;
* [https://codeforces.com/blog/entry/72527 codeforces.com — Modular Arithmetic for Beginners]&lt;br /&gt;
Код:&lt;br /&gt;
* [https://github.com/indy256/codelibrary/blob/master/cpp/numbertheory/modint.h indy256/codelibrary/cpp/numbertheory/modint.h]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Математика]]&lt;/div&gt;</summary>
		<author><name>Ctrlalt</name></author>
	</entry>
</feed>