ধরুন আমাদের m অক্ষর সংখ্যা এবং আরেকটি মান n আছে। আমাদের এই m অক্ষরগুলি থেকে নিয়ে অক্ষর দিয়ে তৈরি n দৈর্ঘ্যের স্ট্রিংগুলির সংখ্যা গণনা করতে হবে এবং স্ট্রিংটির দৈর্ঘ্যের 1-এর বেশি কোনও প্যালিনড্রোমিক সাবস্ট্রিং নেই৷ যদি উত্তরটি খুব বড় হয় তবে ফলাফলটি 10^9+7 দ্বারা পরিবর্তন করুন৷পি>
সুতরাং, যদি ইনপুটটি n =2 m =3 এর মত হয়, তাহলে আউটপুট 6 হবে কারণ m =3, তাই যদি বর্ণমালাগুলি {x,y,z} হয়, আমরা স্ট্রিং তৈরি করতে পারি যেমন:[xx, xy,xz ,yx,yy,yz,zx,zy,zz] কিন্তু [xx,yy,zz] বৈধ নয় তাই ৬টি স্ট্রিং আছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- p :=10^9+7
- যদি n 1 এর মত হয়, তাহলে
- মি মোড পি রিটার্ন করুন
- যদি n 2 এর মত হয়, তাহলে
- রিটার্ন m *(m - 1) mod p
- যদি m <=2, তারপর
- রিটার্ন 0
- রিটার্ন m*(m-1) * ((m-2)^(n-2) mod p) mod p
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(n, m):
p = 10**9+7
if n == 1:
return m % p
if n == 2:
return m * (m - 1) % p
if m <= 2:
return 0
return m * (m - 1) * pow(m - 2, n - 2, p) % p
n = 2
m = 3
print(solve(n, m)) ইনপুট
3, [1,2,3,4,1]
আউটপুট
6