কম্পিউটার

পাইথনে সাংখ্যিক স্ট্রিং বিভক্ত করে আমরা যেভাবে মানগুলির একটি তালিকা তৈরি করতে পারি তার সংখ্যা গণনা করার প্রোগ্রাম


ধরুন আমরা একটি স্ট্রিং s আছে. s-এ 0 - 9 থেকে সংখ্যা রয়েছে এবং আমাদের আরও একটি সংখ্যা k আছে। আমাদেরকে [1, k] থেকে সংখ্যার তালিকা হিসাবে s-কে উপস্থাপন করা যেতে পারে এমন বিভিন্ন উপায়ে সংখ্যা খুঁজে বের করতে হবে। যদি উত্তরটি খুব বড় হয় তবে ফলাফল মোড 10^9 + 7 ফেরত দিন।

সুতরাং, যদি ইনপুটটি s ="3456" k =500 এর মতো হয়, তাহলে আউটপুট হবে 7, যেমন আমরা s এর মতো [3, 4, 5, 6], [34, 5, 6], [3, 4, 56], [3, 45, 6], [34, 56], [345, 6], [3, 456]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • m :=10^9 + 7

  • N :=s

    এর আকার
  • dp :=আকারের একটি তালিকা (N + 1) এবং 0

    দিয়ে পূরণ করুন
  • dp[N] :=1

  • N − 1 থেকে 0 রেঞ্জে i এর জন্য, 1 দ্বারা হ্রাস করুন, করুন

    • curr_val :=0

    • j-এর জন্য i থেকে N, করুন

      • curr_val :=curr_val * 10 + (s[j] সংখ্যা হিসাবে)

      • যদি curr_val 1 থেকে k রেঞ্জে থাকে, তাহলে

        • dp[i] :=(dp[i] + dp[j + 1]) mod m

      • অন্যথায়,

        • লুপ থেকে বেরিয়ে আসুন

  • dp[0]

    ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

শ্রেণীর সমাধান:def solve(self, s, k):m =10 ** 9 + 7 N =len(s) dp =[0] * (N + 1) dp[N] =1 i এর জন্য পরিসীমা(N − 1, −1, −1):curr_val =0 এর জন্য j রেঞ্জে (i, N):curr_val =curr_val * 10 + int(s[j]) যদি 1 <=curr_val <=k:dp[ i] =(dp[i] + dp[j + 1]) % m else:ব্রেক রিটার্ন dp[0]ob =Solution()s ="3456"k =500print(ob.solve(s, k)) 

ইনপুট

"3456", 500

আউটপুট

7

  1. পাইথনে স্ট্রিং অক্ষর ব্যবহার করে আমরা অনন্য প্যালিনড্রোমের সংখ্যা গণনা করার প্রোগ্রাম

  2. পাইথনে প্রদত্ত স্ট্রিং অক্ষর থেকে k আকারের প্যালিনড্রোমের সংখ্যা গণনা করার প্রোগ্রাম তৈরি করা যেতে পারে

  3. পাইথনে 0 থেকে n মান দিয়ে অনন্য বাইনারি অনুসন্ধান গাছের সংখ্যা গণনা করার প্রোগ্রাম তৈরি করা যেতে পারে

  4. স্ট্রিংয়ের সংখ্যা খুঁজে বের করার জন্য প্রোগ্রাম আমরা তৈরি করতে পারি যেখানে 'a' 'a' বা 'b' হতে পারে এবং 'b' পাইথনে 'b' থাকে