ধরুন আমাদের n সংখ্যা সহ একটি সংখ্যাসূচক স্ট্রিং S আছে। বিবেচনা করুন S একটি ডিজিটাল ঘড়ির প্রতিনিধিত্ব করে এবং পুরো স্ট্রিংটি 0 থেকে 10^n - 1 পর্যন্ত একটি পূর্ণসংখ্যা দেখায়৷ যদি সংখ্যার একটি ছোট সংখ্যা থাকে তবে এটি অগ্রণী 0s দেখাবে৷ অপারেশন অনুসরণ করুন -
-
ঘড়ির কাঁটার সংখ্যা 1 বা
কমিয়ে দিন -
দুটি সংখ্যা অদলবদল করুন
আমরা চাই ন্যূনতম সংখ্যক অপারেশনের প্রয়োজন সহ ঘড়িটি 0 দেখাবে। এটি করার জন্য আমাদের প্রয়োজনীয় অপারেশনের সংখ্যা গণনা করতে হবে৷
সুতরাং, যদি ইনপুটটি S ="1000" এর মতো হয়, তাহলে আউটপুট হবে 2, কারণ আমরা শেষ 0 এর সাথে প্রথম 1 অদলবদল করতে পারি, তাই স্ট্রিংটি "0001" হবে এখন "0000" পেতে এটি 1 কমিয়ে আনুন।
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
n := size of S x := digit at place S[n - 1] for initialize i := 0, when i <= n - 2, update (increase i by 1), do: if S[i] is not equal to '0', then: x := x + (digit at place S[i]) + 1 return x
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; int solve(string S) { int n = S.size(); int x = S[n - 1] - '0'; for (int i = 0; i <= n - 2; i++) if (S[i] != '0') x = x + S[i] + 1 - '0'; return x; } int main() { string S = "1000"; cout << solve(S) << endl; }
ইনপুট
"1000"
আউটপুট
2