ধরুন আমাদের একটি পূর্ণসংখ্যা আছে। আমরা নিচের ধাপগুলো ঠিক দুইবার প্রয়োগ করব, ধাপগুলো −
এর মত-
0 থেকে 9 রেঞ্জের মধ্যে একটি সংখ্যা x বেছে নিন।
-
0 থেকে 9 রেঞ্জের মধ্যেও আরেকটি ডিজিট y বেছে নিন। y সংখ্যা x এর সমান হতে পারে।
-
y দ্বারা সংখ্যার দশমিক প্রতিনিধিত্বে x এর সমস্ত উপস্থিতি প্রতিস্থাপন করুন। নতুন পূর্ণসংখ্যার কোন অগ্রণী শূন্য থাকতে পারে না, এছাড়াও নতুন পূর্ণসংখ্যার মান 0 হতে পারে না।
এখন বিবেচনা করুন a এবং b কে যথাক্রমে প্রথম এবং দ্বিতীয়বার সংখ্যায় অপারেশন প্রয়োগ করার ফলাফল। তারপর a এবং b এর মধ্যে সর্বাধিক পার্থক্য খুঁজুন।
সুতরাং, যদি ইনপুটটি 555 এর মত হয়, তাহলে আউটপুটটি হবে 888 প্রথমবার x =5 এবং y =9 হিসাবে এবং নতুন পূর্ণসংখ্যাটিকে a তে সংরক্ষণ করুন। দ্বিতীয়বার x =5 এবং y =1 বাছাই করুন এবং b এ নতুন পূর্ণসংখ্যা সংরক্ষণ করুন।
তাই এখন আমাদের আছে a =999 এবং b =111 এবং সর্বাধিক পার্থক্য হল =999 - 111 =888।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন সংজ্ঞায়িত করুন getMax(), এটি x,
লাগবে -
s :=x কে স্ট্রিং এ রূপান্তর করুন
-
a :='9'
-
i :=0
-
যখন (i
করুন-
(i 1 দ্বারা বাড়ান)
-
-
যদি i
-
a :=s[i]
-
-
আরম্ভ করার জন্য i :=0, যখন i
-
যদি s[i] a এর মত হয়, তাহলে −
-
s[i] :='9'
-
-
-
নম্বর হিসাবে s ফেরত দিন
-
একটি ফাংশন সংজ্ঞায়িত করুন getMin(), এটি x,
লাগবে -
s :=x কে স্ট্রিং এ রূপান্তর করুন
-
যদি s[0] '1' এর সমান না হয়, তাহলে −
-
a :=s[0]
-
আরম্ভ করার জন্য i :=0, যখন i
-
যদি s[i] a এর মত হয়, তাহলে −
-
s[i] :='1'
-
-
-
-
অন্যথায়
-
যদি s এর আকার 1 এর সমান হয়, তাহলে −
-
রিটার্ন 1
-
-
i :=0
-
a :='1'
-
যখন (i
করুন-
(i 1 দ্বারা বাড়ান)
-
-
যদি i
-
a :=s[i]
-
-
আরম্ভ করার জন্য i :=1, যখন i
-
যদি s[i] a এর মত হয়, তাহলে −
-
s[i] :='0'
-
-
-
-
নম্বর হিসাবে s ফেরত দিন
-
প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
-
a :=getMax(num)
-
b :=getMin(num)
-
ফেরত |a - b|
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; class Solution { public: int getMax(int x){ string s = to_string(x); char a = '9', b; int i = 0; while (i < s.size() && s[i] == '9') i++; if (i < s.size()) a = s[i]; for (int i = 0; i < s.size(); i++) { if (s[i] == a) { s[i] = '9'; } } return stoi(s); } int getMin(int x){ string s = to_string(x); char a; if (s[0] != '1') { a = s[0]; for (int i = 0; i < s.size(); i++) { if (s[i] == a) { s[i] = '1'; } } } else { if (s.size() == 1) { return 1; } int i = 0; a = '1'; while (i < s.size() && s[i] <= '1') i++; if (i < s.size()) a = s[i]; for (int i = 1; i < s.size(); i++) { if (s[i] == a) { s[i] = '0'; } } } return stoi(s); } int maxDiff(int num) { int a = getMax(num); int b = getMin(num); return abs(a - b); } }; main(){ Solution ob; cout << (ob.maxDiff(666)); }
ইনপুট
666
আউটপুট
888