العمل بترديد عدد أولي
الجمع والضرب والبقاء داخل mod
العمل بترديد عدد أولي درس مجاني في Coding Interview Prep على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Coding Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Coding Interview Prep 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) وفتح باقي دورة Coding Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.
ماذا ستتعلم في «العمل بترديد عدد أولي»؟
الجمع والضرب والبقاء داخل mod تتمرن على Coding Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Coding Interview Prep؟
لا تُشترط خبرة سابقة. Coding Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «العمل بترديد عدد أولي»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Coding Interview Prep هذا؟
نعم. كل درس في Coding Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- العمل بترديد عدد أولي
- الرفع السريع للقوى بترديد
- المعكوس الترديدي باستخدام فيرما
- nCr باستخدام المضروبات المحسوبة مسبقًا