C++中直角等腰三角形内最多能容纳多少个正方形
任务是找到在一个给定底边为‘s’的直角等腰三角形内最多能容纳多少个边长为‘a’的正方形(等腰三角形至少有两条边相等)。
让我们用一个例子来理解我们要做什么
输入
s=5, a=1
输出
10
解释 − 底部正方形的数量可以通过将s除以a并减去1来计算。所以底部正方形的数量 = 5/1 – 1 = 4。
类似地,当放置底部4个正方形时,我们得到一个新的等腰三角形,底边为(s-a),然后我们重复相同的步骤,得到3个正方形,依此类推,直到顶部放置一个正方形。
输入
s=7, a=2
输出
3
下面程序中使用的算法如下
为了找到最大正方形数量,我们必须从三角形的底边开始,计算正方形的数量。
要找到正方形的数量,我们将底边s除以正方形的边长a,然后从中减去1 = s/a – 1。
然后它会留下另一个底边为(s - a)的等腰三角形,它容纳的正方形数量比其下方前一行少一个,我们可以用以下方式计算:
下一行的正方形数量 = (s - a)/a – 1 = (s/a – a/a) – 1= s/a - 1 - 1 = s/a – 2 = 比前一行少一个正方形。
正方形的数量不断减少,直到达到1,因此我们只需要找到底行的正方形数量,并使用求自然数之和的公式来找到最终的总和,即:
(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
广告