ধরুন আমাদের একটি পূর্ণসংখ্যা আছে। আমরা নিচের ধাপগুলো ঠিক দুইবার প্রয়োগ করব, ধাপগুলো −
এর মত-
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