দেওয়া কাজ হচ্ছে 'a' বাহু বিশিষ্ট বর্গের সর্বোচ্চ কতগুলো একটি দেয়া কণকোণী সমদ্বিবাহু ত্রিভুজে ফিট होয়ে যায় যার বেস 's' (একটি সমদ্বিবাহু ত্রিভুজের কমপক্ষে ২টি সমান বাহু থাকে)।
উদাহরণ দিয়ে বুঝি:
ইনপুট
s=5, a=1
আউটপুট
10
ব্যাখ্যা − বেসে বর্গের সংখ্যা s কে a দিয়ে ভাগ করে ১ বিয়োগ করে বের করা যায়। তাই বেসে বর্গের সংখ্যা = 5/1 – 1 = ৪।
সemblerে নিচের ৪টি বর্গ রাখলে একটি নতুন সমদ্বিবাহু ত্রিভুজ তৈরি হয় যার বেস (s-a) এবং একই প্রক্রিয়া दुহরাতে ৩টি বর্গ পাওয়া যায় এবং এইভাবে শীর্ষে একটার পর একটা বর্গ রাখা যায়।

ইনপুট
s=7, a=2
আউটপুট
3
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি নিম্নরূপ
সর্বোচ্চ বর্গের সংখ্যা বের করতে ত্রিভুজের বেস থেকে শুরু করে বর্গের সংখ্যা বের করতে হবে।
বর্গের সংখ্যা বের করতে বেস s কে বর্গের বাহু a দিয়ে ভাগ করে ১ বিয়োগ করতে হবে = s/a – 1।
তাহলে একে অন্য সমদ্বিবাহু ত্রিভুজ থাকবে যার বেস (s - a) এবং এটি নিচের সারি থেকে এক কম বর্গ ধারণ করবে যা নিচেরভাবে ক্যালকুলেট করা যায় −
পরবর্তী সারিতে বর্গ = (s - a)/a – 1 = (s/a – a/a) – 1= s/a - 1 - 1 = s/a – 2 = পূর্বের সারির চেয়ে এক কম বর্গ।
বর্গের সংখ্যা ১ পর্যন্ত কমতে থাকবে, তাই আমাদেরকে শুধু বেস সারির বর্গের সংখ্যা বের করে প্রাকৃতিক সংখ্যা যোগফলের ফর্মুলা ব্যবহার করে ফাইনাল সম বের করতে হবে যা হচ্ছে −
(n) * (n + 1) / 2
এই ক্ষেত্রে ফর্মুলা হয় − ((s / a) – 1) * (s / a) / 2
উদাহরণ
#include<bits/stdc++.h>
using namespace std;
int Max(int s, int a){
//formula for calculating maximum squares
return ((s / a) - 1) * (s / a) / 2;
}
//Main function
int main(){
int s = 5, a = 1;
cout <<"Maximum squares possible are: "<<Max(s,a);
return 0;
}আউটপুট
10