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

更新于:2020年8月3日

浏览量 299

开启你的职业生涯

完成课程获得认证

开始学习
广告