Modulo — ঘর, চক্র ও inverse¶
Mod 5-এ 7 ধাপ এগোনো¶
flowchart LR
A["0"] --> B["1"] --> C["2"] --> D["3"] --> E["4"] --> Aসম্পূর্ণ পথ: 0 → 1 → 2 → 3 → 4 → 0 → 1 → 2। তাই 7 % 5 = 2। ঘড়ির মতো ঘুরে আসি, মোট কয়বার ঘুরেছি সেই তথ্য আর রাখি না।
3⁵ mod 7: প্রতিটি binary-exponentiation ধাপ¶
| শুরুতে exponent | result | base | কাজের পরে result | square-এর পরে base |
|---|---|---|---|---|
| 5 (odd) | 1 | 3 | 3 | 2 |
| 2 (even) | 3 | 2 | 3 | 4 |
| 1 (odd) | 3 | 4 | 5 | 2 |
প্রতিবার exponent-কে 2 দিয়ে integer divide করা হয়: 5 → 2 → 1 → 0। উত্তর 5। সরাসরি 3⁵=243, 243%7=5 দিয়েও মেলে।
ভাগের বদলে inverse¶
flowchart LR
A["3 × 5 = 15 ≡ 1 mod 7"] --> B["3-এর inverse হলো 5"]
B --> C["6 / 3 mod 7 = 6 × 5 mod 7 = 2"]
C --> D["যাচাই: 2 × 3 mod 7 = 6"]1/3 mod 7-এর মান 5; এটি integer division-এর 0 নয়। আমরা এমন x খুঁজছি যাতে 3x ≡ 1 (mod 7)।
Mod 6-এ 2-এর inverse নেই: 2x % 6 শুধু 0,2,4 হতে পারে, কখনো 1 নয়। তাই modular division-এর আগে gcd(ভাজক,modulus)=1 পরীক্ষা জরুরি।
যোগ, গুণ ও power-cycle¶
| হিসাব | ছোট করে হিসাব | ফল |
|---|---|---|
| (9+8) mod 12 | 17 mod 12 | 5 |
| (9−11) mod 12 | −2-এর nonnegative remainder | 10 |
| (8×9) mod 5 | (3×4) mod 5 | 2 |
7-এর positive powers-এর শেষ অঙ্কের পূর্ণ cycle:
flowchart LR
A["7¹: 7"] --> B["7²: 9"] --> C["7³: 3"] --> D["7⁴: 1"] --> A7⁶-এর শেষ অঙ্ক দ্বিতীয় ঘরের 9; কারণ (6−1)%4=1। Exponent 0 হলে আলাদা করে 7⁰=1।
nCr-এর তিন ধাপ: C(5,2) mod 7¶
flowchart LR
A["numerator: 5! mod 7 = 1"] --> C["1 × inverse(5) mod 7"]
B["denominator: 2! × 3! mod 7 = 5"] --> C
C --> D["inverse(5)=3; উত্তর 3"]সরাসরি C(5,2)=10, 10%7=3। এই factorial পদ্ধতিতে n<p রাখা হয়েছে।
ছোট rolling hash: একই remainder হলে collision হতে পারে¶
ধরি A=1, B=2, base=3, modulus=7; প্রতিটি অক্ষরে h=(h*3+value)%7।
| string | প্রথম state | পরের state | hash |
|---|---|---|---|
| AB | 1 | (1×3+2)%7 | 5 |
| BA | 2 | (2×3+1)%7 | 0 |
Hash ছোট range-এ অনেক string-কে বসায়; এটি দ্রুত প্রার্থী খোঁজে, সমতার নিশ্চয়তা দেয় না।