দুটি সংখ্যা start এবং end দেওয়া আছে যেগুলো একটি রেঞ্জ নির্দেশ করে। লক্ষ্য হলো [start, end] রেঞ্জে কতগুলো ইউনারি নম্বর আছে সেটি বের করা।
একটি সংখ্যা ইউনারি কিনা চেক করতে পারি নিচের ধাপগুলো অনুসরণ করে: যদি সংখ্যা ১৩ নিই, তবে ১2 + ৩2 = ১০, তারপর ১2 + ০2 = ১। এইভাবে চূড়ান্ত যোগফল ১ হলে সেটি ইউনারি।
উদাহরণ ১
ইনপুট
start=1 end=20
আউটপুট
একটি রেঞ্জে ইউনারি নম্বরগুলোর সংখ্যা: 5
ব্যাখ্যা
সংখ্যাগুলো: ১, ৭, ১০, ১২, এবং ১৩
উদাহরণ ২
ইনপুট
start=50 end=100
আউটপুট
একটি রেঞ্জে ইউনারি নম্বরগুলোর সংখ্যা: 7
ব্যাখ্যা
সংখ্যাগুলো: ৫৯, ৬৩, ৬৭, ৭৪, ৭৫, ৭৮, এবং ৮৯
প্রয়োগ করা পদ্ধতি
১ থেকে ৯ এর মধ্যে ১ এবং ৭ ইউনারি। বাকি সংখ্যাগুলোর জন্য ডিজিটগুলোর বর্গের যোগফল নেয়া হয় যতক্ষণ না ১ আসে। এই প্রসেস রেঞ্জের সব সংখ্যার জন্য চালানো হয়। এইভাবে পাওয়া সব ইউনারি নম্বরের জন্য কাউন্ট বাড়ানো হয়।
দুটি ইন্টিজার
start,endইনপুট নিন।check_unary(int number)ফাংশনটি true রিটার্ন করে যদি মানটি ইউনারি হয়, অন্যথায় false।Unary_range(int start, int end)ফাংশনটি রেঞ্জ ভেরিয়েবল গ্রহণ করে রেঞ্জে ইউনারি নম্বরের সংখ্যা রিটার্ন করে।আরম্ভিক কাউন্ট ০।
forলুপ দিয়েi=startথেকেendপর্যন্ত ট্রুভার্স করুন। যদিcheck_unary(i)true রিটার্ন করে তবে কাউন্ট বাড়ান।check_unary(int number)-এর ভিতরে অস্থায়ী ভেরিয়েবলcountনিন।যদি
N১ বা ৭ হয়, true রিটার্ন করুন। ১০-র চেয়ে ছোট (number/10 == 0) বাকি সব সংখ্যার জন্য false রিটার্ন করুন।whileলুপে ডিজিটগুলোর বর্গের যোগফল ক্যালকুলেট করুন।ফিরে
check_unary(int number)কল করুন এভাবে চলমান যোগফলের জন্য যতক্ষণ না যোগফল ১ হয়।কাউন্ট রিটার্ন করুন ফলাফল হিসেবে।
উদাহরণ কোড
#include <iostream>
using namespace std;
bool check_unary(int number) {
int total;
if (number == 1) {
return true;
} else if(number == 7) {
return true;
} else if (number / 10 == 0) {
return false;
}
while (number != 0) {
int temp = number % 10;
total = total + temp * temp;
number = number / 10;
}
check_unary(total);
}
int Unary_range(int start, int end) {
int count = 0;
for (int i = start; i <= end; i++) {
if (check_unary(i) == 1) {
count++;
}
}
return count;
}
int main() {
int start = 200, end = 400;
cout << "একটি রেঞ্জে ইউনারি নম্বরগুলোর সংখ্যা: " << Unary_range(start, end);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
একটি রেঞ্জে ইউনারি নম্বরগুলোর সংখ্যা: 31