একটি সমদ্বিবাহু সমকোণী ত্রিভুজ দেওয়া আছে। সমদ্বিবাহু মানে দুটি বাহু সমান। সমকোণী মানে উচ্চতা (ag) ও ভিত্তি (dg) একে অপরের লম্ব। লক্ষ্য হলো এই ত্রিভুজে ২ বর্গ একক পার্শ্ব বিশিষ্ট সর্বোচ্চ কতটি বর্গ ফিট করা যায়। ভিত্তি বা উচ্চতা (দুটো সমান) ইনপুট নেওয়া হবে। বর্গের সংখ্যা আউটপুট হবে।
নিচের চিত্রটি 참고 করুন:

দেওয়া ত্রিভুজের উচ্চতা ag ও ভিত্তি gd-তে ৩টি বর্গ আছে যার পার্শ্ব ২। কোণার 'a' ও 'd' বিন্দু থেকে ত্রিভুজ aib ও cde কখনো কোনো বর্গে অবদান রাখবে না। তাই আমাদের সবসময় এই ত্রিভুজগুলোর জন্য ২ একক الإضافی দৈর্ঘ্য লাগবে। বাকি ভিত্তি gd (বা উচ্চতা ag) কে ২ দিয়ে ভাগ করলে বর্গের সংখ্যা পাওয়া যাবে। উচ্চতা (ag)-র জন্যও একই নিয়ম।
while (base > 2)
squares += (base - 2) / 2;
base = base - 2;
// ফর্মুলা: Ap = b*(b+1)/2 ... যেখানে new b = b-2
উদাহরণ ১
ইনপুট: ভিত্তি: ১২
আউটপুট: বর্গের সংখ্যা: ১৫
ব্যাখ্যা:
ভিত্তি ১২>২, বর্গ ১০/২=৫, নতুন ভিত্তি ১২-২=১০ ভিত্তি ১০>২, বর্গ ৮/২=৪, নতুন ভিত্তি ১০-২=৮ ভিত্তি ৮>২, বর্গ ৬/২=৩, নতুন ভিত্তি ৮-২=৬ ভিত্তি ৬>২, বর্গ ৪/২=২, নতুন ভিত্তি ৬-২=৪ ভিত্তি ৪>২, বর্গ ২/২=১, নতুন ভিত্তি ৪-২=২ ভিত্তি ২>২ X মোট বর্গ = ৫+৪+৩+২+১ = ১৫
উদাহরণ ২
ইনপুট: ৫
আউটপুট: বর্গের সংখ্যা - ১
ব্যাখ্যা:
ভিত্তি ৫>২, বর্গ ৩/২=১, নতুন ভিত্তি ৫-২=৩ ভিত্তি ৩>২, বর্গ ১/২=০, নতুন ভিত্তি ৩-২=১ ভিত্তি ১>২ X মোট বর্গ = ১
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- ইন্টিজার ভেরিয়েবল
baseত্রিভুজের ভিত্তি স্টোর করে। numofSquares(int b)ফাংশন বেসbবিশিষ্ট ত্রিভুজে কতটি বর্গ ফিট হয় সেটি গণনা করে।- প্রথমে
b = b - 2(কোণার إضافی অংশ বাদ দেওয়া)। - ফর্মুলা অনুযায়ী,
b = floor(b/2), এই নতুনb-তেb*(b+1)/2টি পার্শ্ব ২ বিশিষ্ট বর্গ থাকবে। - গণনা করা ফলাফল রিটার্ন করা হয়।
উদাহরণ কোড
#include <stdio.h>
#include <math.h>
int numofSquares(int b) {
// কোণার إضافی অংশ বাদ দেওয়া
b = (b - 2);
// প্রতিটি বর্গের ভিত্তি ২ দৈর্ঘ্যের
b = floor(b / 2);
return b * (b + 1) / 2;
}
int main() {
int base = 8;
printf("ফিট করা যাওয়া সর্বোচ্চ বর্গ: %d", numofSquares(base));
return 0;
}
আউটপুট
ফিট করা যাওয়া সর্বোচ্চ বর্গ: 6