আমাদের একটি ধনাত্মক সংখ্যা N দেওয়া হয়েছে। লক্ষ্য হল সংখ্যা গণনা করা যেভাবে N সংখ্যাটিকে 3 ভাগে ভাগ করা যায়। অংশ সমান হতে পারে বা নাও হতে পারে। N এর পরিসর [1,5000]।
আমরা সংখ্যার 3টি অংশের জন্য থ্রি ফর লুপ ব্যবহার করে এটি করব। সবচেয়ে ভিতরের লুপে চেক করুন যে তিনটির যোগফল N এর সমান। যদি সত্য হয়, তাহলে উপায়ের সংখ্যা বৃদ্ধি করুন।
উদাহরণ দিয়ে বোঝা যাক।
ইনপুট − N=5
আউটপুট − N কে 3 ভাগে ভাগ করার উপায়ের সংখ্যা:2
ব্যাখ্যা − 5 (1,1,3) এবং (1,2,2) এর যোগফল হিসাবে দেখানো যেতে পারে
ইনপুট − N=9
আউটপুট − N কে 3 ভাগে ভাগ করার উপায়ের সংখ্যা:7
ব্যাখ্যা − 9 এর যোগফল হিসাবে দেখানো যেতে পারে:(1, 1, 7), (1, 2, 6), (1, 3, 5), (1, 4, 4), (2, 2, 5), ( 2, 3,4) এবং (3, 3, 3)।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
-
আমরা 1 এবং 5000 এর মধ্যে মান সহ একটি পূর্ণসংখ্যা N শুরু করি।
-
ফাংশন divideN(int n) n নেয় এবং n কে 3 ভাগে ভাগ করা যায় তার সংখ্যা ফেরত দেয়।
-
উপায় সংখ্যার জন্য প্রাথমিক পরিবর্তনশীল গণনা 0 হিসাবে নিন।
-
সংখ্যার প্রতিটি অংশের জন্য তিনটি লুপ ব্যবহার করে ট্রাভার্স করুন।
-
1<=i
থেকে সবচেয়ে বাইরের লুপ -
i, j এবং k এর যোগফল n এর সমান কিনা তা পরীক্ষা করুন। যদি সত্য হয় তাহলে সংখ্যা বৃদ্ধি করুন।
-
সমস্ত লুপ গণনার শেষে n কে তিনটি ভাগে ভাগ করার মোট উপায় থাকবে।
-
ফলাফল হিসাবে গণনা ফেরত দিন।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int divideN(int n){ int count = 0; for (int i = 1; i < n; i++){ for (int j = i ; j < n; j++){ for (int k = j; k < n; k++){ int sum=i+j+k; if(sum==n) { count++; } } } } return count; } int main(){ int N=500; cout <<endl<< "Number of ways to divide N in 3 parts : "<<divideN(N); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেNumber of ways to divide N in 3 parts: 20833