একটি ইন্টিজার n ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হলো n-কে বিজোড় ইন্টিজারগুলোর যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা বের করা। উদাহরণস্বরূপ, যদি n = 3 হয়, তবে এটি যোগফল (১+১+১) এবং (৩) হিসেবে প্রকাশ করা যায়, তাই মোট ২ পদ্ধতি।
উদাহরণ ১
ইনপুট
n=6
আউটপুট
'n' কে বিজোড় ইন্টিজার যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা: 8
ব্যাখ্যা
'n' কে বিজোড় ইন্টিজার যোগফল হিসেবে প্রকাশ করার পদ্ধতিগুলো: ১. ১+১+১+১+১+১ ২. ৩+১+১+১ ৩. ১+৩+১+১ ৪. ১+১+৩+১ ৫. ১+১+১+৩ ৬. ৩+৩ ৭. ১+৫ ৮. ৫+১
উদাহরণ ২
ইনপুট
n=9
আউটপুট
'n' কে বিজোড় ইন্টিজার যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা: 34
ব্যাখ্যা
'n' কে বিজোড় ইন্টিজার যোগফল হিসেবে প্রকাশ করার কিছু পদ্ধতি: ১. ১+১+১+১+১+১+১+১+১ ২. ৩+৩+৩ ৩. ৫+৩+১ ৪. ৭+১+১ ৫. ...এবং অন্যান্য такие কম্বিনেশন
প্রয়োগ করা পদ্ধতি
এই পদ্ধতিতে আগের সংখ্যাগুলো n-1তম এবং n-2তম সংখ্যা থেকে বিজোড় ইন্টিজার যোগফল হিসেবে প্রকাশ করার পদ্ধতি চেক করা হয়। পদ্ধতি হবে ways(n-1) + ways(n-2)।
ইনপুট হিসেবে ইন্টিজার
nনিন।odd_ways(int n)ফাংশনটি পদ্ধতির সংখ্যা রিটার্ন করে।n+1দৈর্ঘ্যের অ্যারেarrনিন বিজোড় যোগফল হিসেবে প্রকাশ করার পদ্ধতি সংরক্ষণের জন্য।সংখ্যা ০-এর জন্য কোনো পদ্ধতি নেই, তাই
arr[0] = 0।সংখ্যা ১-এর জন্য মাত্র ১ পদ্ধতি, তাই
arr[1] = 1।বাকি সংখ্যাগুলোর জন্য
i=2থেকেnপর্যন্তarr[i] = arr[i-1] + arr[i-2]সেট করুন।শেষে
arr[n]-এ বিজোড় যোগফল হিসেবে প্রকাশ করার পদ্ধতি থাকবে।arr[n]রিটার্ন করুন ফলাফল হিসেবে।
উদাহরণ কোড
#include<iostream>
using namespace std;
int odd_ways(int n) {
int arr[n+1];
arr[0] = 0;
arr[1] = 1;
for(int i = 2; i <= n; i++) {
arr[i] = arr[i-1] + arr[i-2];
}
return arr[n];
}
int main() {
int n = 6;
cout << "'n' কে বিজোড় ইন্টিজার যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা: " << odd_ways(n);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
'n' কে বিজোড় ইন্টিজার যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা: 8