একটি সংখ্যা N ইনপুট হিসেবে দেওয়া আছে। N-এর ওপর দুটি অপারেশন করুন এবং প্রক্রিয়ায় জেনারেট হওয়া ইউনিক সংখ্যাগুলোর সংখ্যা বের করুন। ধাপগুলো:
সংখ্যাতে ১ যোগ করুন
জেনারেট হওয়া সংখ্যা থেকে ট্রেলিং জিরো মুছুন, যদি থাকে
যদি N = 8 হয়, তবে জেনারেট হওয়া সংখ্যাগুলো:
ধাপ ১: ৮ → ৯ →
ধাপ ২: ১ → (১০ থেকে ০ মুছে)
ধাপ ১: ২ → ৩ → ৪ → ৫ → ৬ → ৭ → ৮ (একই সিকোয়েন্স)
ইউনিক সংখ্যার কাউন্ট হবে ৯।
উদাহরণ ১
ইনপুট
N=21
আউটপুট
N থেকে ১ যোগ করে এবং ট্রেলিং জিরো মুছে ইউনিক সংখ্যা তৈরি করার সংখ্যা: 18
ব্যাখ্যা
সংখ্যাগুলো: ২১, ২২, ২৩, ২৪, ২৫, ২৬, ২৭, ২৮, ২৯, ৩, ৪, ৫, ৬, ৭, ৮, ৯, ১, ২, ৩ — এখন একই সিকোয়েন্স। ইউনিক সংখ্যা: ১৮
উদাহরণ ২
ইনপুট
N=38
আউটপুট
N থেকে ১ যোগ করে এবং ট্রেলিং জিরো মুছে ইউনিক সংখ্যা তৈরি করার সংখ্যা: 11
ব্যাখ্যা
সংখ্যাগুলো: ৩৮, ৩৯, ৪, ৫, ৬, ৭, ৮, ৯, ১, ২, ৩, ৪ — এখন একই সিকোয়েন্স। ইউনিক সংখ্যা: ১১
প্রয়োগ করা পদ্ধতি
এই পদ্ধতিতে একটি unordered_set তৈরি করা হয় যেটি জেনারেট হওয়া সব ইউনিক সংখ্যা রাখবে। যদি সংখ্যাগুলো রিপিট হয়, তবে ইটেরেশন বন্ধ করা হয়। সেটের সাইজ আমাদের দেবে জেনারেট হওয়া ইউনিক সংখ্যাগুলোর কাউন্ট।
সংখ্যা
Nইন্টিজার হিসেবে নিন।জেনারেট হওয়া সংখ্যা ইনসার্ট করার জন্য
unordered_setনিন।U_S unique_N(unordered_setফাংশনটি সেট এবং& U_S, int N) Nনিয়ে সেটে সংখ্যা যোগ করে যতক্ষণ সব ইউনিক থাকে।যদি
U_S.count(N)১ রিটার্ন করে, অর্থাৎNইতিমধ্যে সেটে আছে। তাই সংখ্যাগুলো রিপিট হবে, ফাংশন থেকে রিটার্ন করুন।অন্যথায়
Nসেটে ইনসার্ট করুন এবং অপারেশন ১ লাগান (১ বাড়ান)।চেক করুন
N-এ ট্রেলিং জিরো আছে কিনা (১০-এর গুণফল কিনা)।যদি
N % 10 == 0হয়, তবে ১০ দিয়ে ভাগ করে ট্রেলিং জিরো মুছুন।আপডেট হওয়া
Nদিয়েunique_N()কল করুন।ফাংশন থেকে রিটার্ন করার পর কাউন্ট হিসেবে সেট
U_S-এর সাইজ নিন।ফলাফল হিসেবে কাউন্ট প্রিন্ট করুন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
void unique_N(unordered_set<int>& U_S, int N) {
if (U_S.count(N)) {
return;
}
U_S.insert(N);
N = N + 1;
while (N % 10 == 0) {
N = N / 10;
}
unique_N(U_S, N);
}
int main() {
int N = 7;
unordered_set<int> U_S;
unique_N(U_S, N);
int count = U_S.size();
cout << "N থেকে ১ যোগ করে এবং ট্রেলিং জিরো মুছে ইউনিক সংখ্যা তৈরি করার সংখ্যা: " << count;
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
N থেকে ১ যোগ করে এবং ট্রেলিং জিরো মুছে ইউনিক সংখ্যা তৈরি করার সংখ্যা: 9