بالنظر إلى مجموعة $ $، يتعين علينا إيجاد منتج من $ A_ {j} $ - $ A_ {I} $ modulo $ 998244353 $ من $ ی $ $ $ and $ j $ jected $ j> i $

cs.stackexchange https://cs.stackexchange.com/questions/128025

سؤال

إعطاء صفيف $ $ ، علينا العثور على منتج $ a_ {} $ - $ A_ {I} $ modulo $ 998244353 $ على جميع $ i $ و $ J $ معين $ j> i $ .
على سبيل المثال.دع الصفيف يكون 1،2،3 دولار ثم سيتم احتساب إجابتي باسم $ (2-1) $ . $ (3-1) $ . $ (3-2) $ = $ 2 $
نظرا لأن عدد العناصر الموجودة في الصفيف يمكن أن تكون كبيرة (حتى 10 دولارات ^ 5 $ ) أنا أبحث عن محلول النظام $ nlogn$ .
لقد حاولت تمثيل صفيف كعناني متعدد الحدود ولكنه يمكن أن يحصل على أي شيء خارجها. الرجاء المساعدة.

هل كانت مفيدة؟

المحلول

المنتج $$ v=prod_ {i هو محدد مصفوفة vandermonde من الأرقام $ a_1، a_2، ...، a_n $ .

مربع هذا الرقم هو المعتقدات $ d $ متعدد الحدود $$ p (x)=prod_i (x-a_i) $

هذا بدوره يساوي $$ v ^ 2= d= (- 1) ^ {n (n-1) / 2} \ prod_ip '(a_i) $$

يمكنك حساب معاملات $ p (x) $ ، وبالتالي $ p '(x) $ < / span> تقييمها في $ n $ نقاط $ a_1، a_2، ...، a_n $ منتجاتهم. ثم حساب الجذر مربع. علامة $ v تحددها عن طريق الفرز وتعد تكاسك عدد مفاتيح التبديل.

يمكنك القيام بكل هذا في $ O (n \ log ^ 2 (n)) $ .

شاهد الخوارزميات ذات الصلة هنا < / a>.

بالنسبة للجذر المربع المعياري، يمكنك استخدام tonelli-shanks لكفاءة. على الرغم من أن الترتيب النظري لهذه الخطوة ثابتة منذ Prime $ 998244353 $ تم إصلاحها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى cs.stackexchange
scroll top