0Pricing
Competitive Programming Academy · درس

العمل بترديد عدد أولي

الجمع والضرب والبقاء داخل mod

العمل بترديد عدد أولي درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

لماذا نأخذ modulo

قد تكبر نتائج المسابقات كثيرًا، وتتجاوز بكثير سعة أي نوع أعداد صحيحة آخر. لذلك تطلب المسائل حساب النتيجة modulo عدد أولي كبير، للحفاظ على صغر الأعداد. 🔢

تعرّف إلى modulo الشهير

أكثر عدد أولي ستراه هو 1000000007، وغالبًا ما يُكتب 1e9+7. حجمه كبير بما يكفي لتفادي التصادمات، وصغير بما يكفي ليتسع له 64 بت.

MOD = 1000000007

معنى modulo

يعطي عامل modulo الباقي بعد القسمة. لذلك فإن 17 % 5 تساوي 2، لأن 17 تترك باقيًا مقداره 2 عند قسمتها على 5.

print(17 % 5)  # 2

يبقى الجمع ضمن modulo

يمكنك إجراء الجمع أولًا ثم حساب modulo في النهاية، أو حساب modulo أثناء التقدم. سيكون الباقي نفسه في الحالتين، لذا اختزل القيم باستمرار للحفاظ على صغرها.

total = (a + b) % MOD

يبقى الضرب ضمن modulo أيضًا

تنطبق القاعدة نفسها على الضرب: احسب حاصل الضرب modulo العدد الأولي. يتعامل Python مع الأعداد الصحيحة الكبيرة تلقائيًا، لكن حساب modulo يحافظ على صغر كل قيمة وسرعة التنفيذ.

prod = (a * b) % MOD

اختزل بعد كل خطوة

في الحلقة الطويلة، طبّق % MOD في كل تكرار. يمنع ذلك الأعداد من التضخم ويحافظ على رخص كل عملية وإمكانية توقع تكلفتها.

ans = (ans * i) % MOD

قد ينتج عن الطرح قيمة سالبة

قد ينتج عن الطرح باقٍ سالب في العديد من اللغات. أضف MOD مجددًا قبل حساب modulo النهائي، بحيث تقع النتيجة في المجال الآمن من 0 إلى MOD - 1.

diff = (a - b + MOD) % MOD

عملية modulo الودودة في Python

الخبر السار هو أن Python تعيد % نتيجة غير سالبة عند استخدام modulus موجب. لذلك تعطي -1 % 7 القيمة 6، لا -1، مما يوفر عليك عملية التصحيح.

print(-1 % 7)  # 6

يتوزع modulo على العمليات

الفكرة الأساسية: (a op b) % m تساوي (a%m op b%m) % m مع الجمع والضرب. يتيح لك ذلك اختزال المدخلات قبل دمجها.

القسمة هي الاستثناء

يعمل الجمع والطرح والضرب بصورة سليمة تحت modulo، لكن القسمة العادية لا تعمل كذلك، وستحتاج لاحقًا في هذه الدورة إلى معكوس modulo لإجرائها.

عيّن MOD مرة واحدة في البداية

عرّف MOD ثابتًا في بداية حلك. فقيمة واحدة مسماة أفضل من نثر 1000000007 في أنحاء الشيفرة، حيث قد يختبئ خطأ مطبعي.

MOD = 10**9 + 7

تحقق سريع

لماذا نضيف MOD قبل حساب modulo لعملية طرح؟

مراجعة

يمكنك الآن الحفاظ على صغر الأعداد الكبيرة باستخدام modulus أولي مثل 1e9+7. اختزل الجمع والطرح والضرب في كل خطوة، وانتبه إلى القيم السالبة، واترك القسمة للمعكوسات. 🎯

الأسئلة الشائعة

هل درس «العمل بترديد عدد أولي» مجاني؟

نعم — نص درس «العمل بترديد عدد أولي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

ماذا ستتعلم في «العمل بترديد عدد أولي»؟

الجمع والضرب والبقاء داخل mod تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟

لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «العمل بترديد عدد أولي»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟

نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. العمل بترديد عدد أولي
  2. الرفع السريع للقوى بترديد
  3. المعكوس الترديدي باستخدام فيرما
  4. ‏nCr باستخدام المضروبات المحسوبة مسبقًا
← العودة إلى Competitive Programming Academy