C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で直角二等辺三角形に収まる正方形の最大数


与えられたタスクは、底辺が「s」の二等辺三角形の中に収まる、辺が「a」の正方形の最大数を見つけることです(二等辺三角形には少なくとも2つの等しい辺があります)。

例を使用して、私たちがしなければならないことを理解しましょう:

入力

s=5, a=1

出力

10

説明 −基数の平方数は、sをaで割り、1を引くことで計算できます。したがって、基数の平方数=5/1 – 1 =4

同様に、下の4つの正方形を配置すると、base(s-a)の新しい二等辺三角形が得られます。次に同じ手順を繰り返して3つの正方形を取得し、1つの正方形が上に配置されるまで続けます。

C++で直角二等辺三角形に収まる正方形の最大数

入力

s=7, a=2

出力

3

以下のプログラムで使用されるアプローチは次のとおりです

  • 平方の最大数を見つけるには、三角形の底から始めて、平方の数を見つける必要があります。

  • 平方の数を見つけるために、底sを平方の辺で割り、それから1を引きます=s / a –1。

  • 次に、底辺が(s-a)の別の二等辺三角形を残します。これは、次の方法で計算できる、その下の前の行より1つ少ない正方形に対応します-

次の行の正方形=(s --a)/ a – 1 =(s / a – a / a)– 1 =s / a-1 --1 =s / a –2=前の行より1正方形小さい。

  • 平方数は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

  1. C++でN*Nチェス盤に配置できる最大のビショップ

    チェス盤のサイズを示す入力Nが与えられます。ここでのタスクは、Nの任意の値について、2人のビショップが互いに攻撃できないようにNXNチェス盤に配置できるビショップの数を見つけることです。例を挙げて理解しましょう。 入力 − n =2 出力 − N * Nチェス盤に配置できる最大のビショップ− 2(上記のように) 説明 −上に示したように、矛盾しない位置は司教が配置されている場所だけです。せいぜい2X2チェス盤のビショップ。 入力 − n =5 出力 − N * Nチェス盤に配置できる最大ビショップ:8(上記のように) 以下のプログラムで使用されているアプローチは次のとおりで

  2. C++で二分木の2つのノードを結合することによって形成できる最大長サイクル

    二分木が与えられます。目標は、指定されたツリーで最大の長さのサイクルを見つけることです。これを行うには、ルートノードから左側のサブツリーと右側のサブツリーの最大の高さを見つけ、これらの最大長のパスを結合して最長のサイクルを取得します。 上記のツリーの場合、最大長サイクルは1-2-3-4-7-6または1-6-7-4-3-2-1です。長さは6です。 入力 −ツリー 出力 −最大長サイクルは− 5 説明 −左側のサブツリーの最大高さは3、右側のサブツリーの最大高さは1です。サイクルの長さは3 + 1 + 1=5になります。サイクルは1-2-3-4-6または1-6-4-3-2