একটি সংখ্যা N ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হলো সকল N ডিজিটের সংখ্যা যাদের রিভার্সের সাথে যোগফল 10^N - 1 হয়, সেটির গণনা করা।
num + rev(num) = 10N - 1
উদাহরণ ১
ইনপুট
N=4
আউটপুট
N ডিজিটের সকল সংখ্যা যাতে num + Rev(num) = 10N - 1 হয় সেটির গণনা: 90
ব্যাখ্যা
সংখ্যাগুলো হবে: 1. 1188 + 8811 = 9999 2. 2277 + 7722 = 9999 3. 1278 + 8721 = 9999 ...মোট ৯০টি সংখ্যা
উদাহরণ ২
ইনপুট
N=5
আউটপুট
N ডিজিটের সকল সংখ্যা যাতে num + Rev(num) = 10N - 1 হয় সেটির গণনা: 0
ব্যাখ্যা
যেহেতু N বিজোড়, মাঝের ডিজিট নিজের সাথে যোগ হবে এবং যোগফল ৯ হবena। উদাহরণ: 148+841=989
প্রয়োগ করা পদ্ধতি
যেকোনো N ডিজিটের সংখ্যার রিভার্সের সাথে যোগফল 999...N বার হবে যদি উভয় সংখ্যার প্রতিটি ডিজিট জোড়ার যোগফল ৯ হয়। বিজোড় N-এর ক্ষেত্রে মাঝের ডিজিট নিজের সাথে যোগ হবে। যেহেতু একই পূর্ণসংখ্যা দুটির যোগফল ৯ হতে পারে না, তাই উত্তর হবে ০। জোড় N-এর ক্ষেত্রে, ১ম-Nতম, ২য়-N-1তম, ৩য়-N-2তম... ডিজিট জোড়ার যোগফল ৯ হতে হবে। সম্ভাব্য জোড়াগুলো: (1+8), (2+7), (3+6), (4+5), (5+4), (6+3), (7+2), (8+1), (9+0)। উত্তর হবে 9 × 10N/2 - 1।
ইনপুট হিসেবে ইন্টিজার
Nনিন।digit_numbers(int N)ফাংশনটিNগ্রহণ করে গণনা রিটার্ন করে।আরম্ভিক কাউন্ট ০ রাখুন।
যদি
Nবিজোড় হয় (N%2 == 1), তবে ০ রিটার্ন করুন।অন্যথায়
count = 9 * pow(10, N/2 - 1)সেট করুন।কাউন্ট রিটার্ন করুন ফলাফল হিসেবে।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int digit_numbers(int N) {
int count = 0;
if (N % 2 == 1) {
return 0;
} else {
count = 9 * pow(10, N/2 - 1);
}
return count;
}
int main() {
int N = 4;
cout << "N ডিজিটের সকল সংখ্যা যাতে num + Rev(num) = 10^N - 1 হয় সেটির গণনা: " << digit_numbers(N);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
N ডিজিটের সকল সংখ্যা যাতে num + Rev(num) = 10^N - 1 হয় সেটির গণনা: 90