কম্পিউটার

অ্যারের সংখ্যা যেখানে সমস্ত সংলগ্ন উপাদানগুলি এমন যে তাদের একটি C++ এ অন্যটিকে ভাগ করে


'এক' এবং 'অন্য' নামে দুটি পূর্ণসংখ্যা দেওয়া হয়েছে। লক্ষ্য হল সম্ভাব্য অ্যারের সংখ্যা খুঁজে বের করা যেমন −

  • অ্যারের উপাদানগুলি 1 এবং 'অন্য'-এর মধ্যে রয়েছে৷

  • অ্যারের সমস্ত উপাদান এমন যে arr[i] ভাগ করে arr[i+1] বা arr[i+1] ভাগ করে arr[i+2]....ইত্যাদি।

  • অ্যারের দৈর্ঘ্য হল 'এক'৷

উদাহরণস্বরূপ

ইনপুট

এক =3, অন্য =2

আউটপুট

অ্যারেগুলির সংখ্যা যেখানে সমস্ত সংলগ্ন উপাদানগুলি এমন যে তাদের একটি অন্যটিকে ভাগ করে:8

ব্যাখ্যা

অ্যারেগুলো হবে:[ 1,1,1 ], [ 1,1,2 ], [ 1,2,1 ], [ 1,2,2 ], [ 2,1,1 ], [ 2 ,1,2 ], [ 2,2,1 ], [ 2,2,2 ]

ইনপুট

এক =2, অন্য =3

আউটপুট

অ্যারেগুলির সংখ্যা যেখানে সমস্ত সংলগ্ন উপাদানগুলি এমন যে তাদের একটি অন্যটিকে ভাগ করে:7

ব্যাখ্যা

অ্যারেগুলি হবে:[ 1,1 ], [ 2,2 ], [ 3,3 ], [ 1,2 ], [ 1,3 ], [ 2,2 ], [ 3,3 ] 

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

আমরা জানি যে প্রতিটি অ্যারের প্রথম উপাদানটি পরিসরের যেকোনো সংখ্যা হতে পারে [1, অন্য]। পরের উপাদানটি সর্বদা পূর্বের গুণিতক বা আগেরটির গুণনীয়ক হবে যাতে বিভাজ্যতার অবস্থা বজায় থাকে। এছাড়াও গুণনীয়ক বা একাধিক 'অন্য' থেকে কম হওয়া উচিত। আমরা গণনা সঞ্চয় করার জন্য ডায়নামিক প্রোগ্রামিং ব্যবহার করব। এর জন্য আমরা অ্যারে অ্যারে ব্যবহার করি arr[i][j]=arr[i−1][j]+পূর্ববর্তী উপাদানের গুণনীয়ক+পূর্ববর্তী উপাদানের বহুগুণ (অন্যের চেয়ে কম)।

  • ইনপুট হিসাবে এক এবং অন্য পূর্ণসংখ্যা নিন।

  • ফাংশন adjacent_elements(int first, int second) অ্যারেগুলির গণনা প্রদান করে যার মধ্যে সমস্ত সন্নিহিত উপাদান এমন যে তাদের একটি অন্যটিকে ভাগ করে।

  • প্রারম্ভিক গণনা 0 হিসাবে নিন এবং অ্যারে অ্যারে[সাইজ][সাইজ]।

  • মেমসেট ব্যবহার করে সমস্ত গণনা 0 হিসাবে শুরু করুন।

  • দুটি ভেক্টর নিন - গুণক সংরক্ষণের জন্য vec এবং গুণিতক সংরক্ষণের জন্য vec_2।

  • i=t থেকে i=সেকেন্ড এবং j=2*i থেকে j=সেকেন্ড পর্যন্ত লুপের জন্য দুটি ব্যবহার করে অতিক্রম করুন। i দ্বারা j বৃদ্ধি করুন।

  • vec[j]-এ i এবং vec_2[i]-এ j যোগ করুন। j লুপের পরে vec[i]-এ i যোগ করুন।

  • লুপ ব্যবহার করে arr[1][i] সেট করুন।

  • ট্রাভার্স অ্যারে আবার এবং এখন vec এবং vec_2 ট্রাভার্স করুন এবং arr[i][j]-এ গুণনীয়ক এবং গুণিতক যোগ করুন।

  • শেষে vec[i] এবং vec_2[i] গণনা এবং পরিষ্কার করতে সমস্ত arr[first][i] যোগ করুন।

  • ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ

#include  namespace ব্যবহার করে std;#define size 1000int adjacent_elements(int first, int second){ int count =0; int arr[size][size]; memset(arr, 0, sizeof arr); ভেক্টর vec[সাইজ], vec_2[সাইজ]; memset(vec, 0, আকারের vec); memset(vec_2, 0, vec_2 এর আকার); (int i =1; i <=সেকেন্ড; i++){ এর জন্য (int j =2*i; j <=সেকেন্ড; j +=i){ vec[j].push_back(i); vec_2[i]. push_back(j); } vec[i]. push_back(i); } এর জন্য (int i =1; i <=সেকেন্ড; i++){ arr[1][i] =1; } এর জন্য (int i =2; i <=প্রথম; i++){ এর জন্য (int j =1; j <=সেকেন্ড; j++){ arr[i][j] =0; (স্বয়ংক্রিয় এটি:vec[j]){ arr[i][j] +=arr[i−1][it]; } এর জন্য (অটো এটা :vec_2[j]){ arr[i][j] +=arr[i−1][it]; } } } এর জন্য (int i =1; i <=দ্বিতীয়; i++){ count =count + arr[first][i]; vec[i].ক্লিয়ার(); vec_2[i].ক্লিয়ার(); } return count;}int main(){int one =2, আরেকটি =2; cout<<"অ্যারের সংখ্যা যেখানে সমস্ত সংলগ্ন উপাদানগুলি এমন যে তাদের একটি অন্যটিকে ভাগ করে:"< 

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
অ্যারেগুলির সংখ্যা যেখানে সমস্ত সন্নিহিত উপাদানগুলি এমন যে তাদের একটি অন্যটিকে ভাগ করে:4

  1. বৃত্তাকার অ্যারেতে সর্বাধিক যোগফল যাতে C++ এ দুটি উপাদান সংলগ্ন থাকে না

  2. C++ এ বাইনারি ম্যাট্রিক্সে 1s দ্বারা ব্লক করা সমস্ত 0s গণনা করুন

  3. একটি সংখ্যায় সংখ্যার গণনা খুঁজুন যা সংখ্যাটিকে C++ এ ভাগ করে

  4. একটি অ্যারে উপাদান খুঁজুন যাতে সমস্ত উপাদান এটি দ্বারা c++ ব্যবহার করে বিভাজ্য হয়