C++で直角二等辺三角形に収まる正方形の最大数
与えられたタスクは、底辺が「s」の二等辺三角形の中に収まる、辺が「a」の正方形の最大数を見つけることです(二等辺三角形には少なくとも2つの等しい辺があります)。
例を使用して、私たちがしなければならないことを理解しましょう:
入力
s=5, a=1
出力
10
説明 −基数の平方数は、sをaで割り、1を引くことで計算できます。したがって、基数の平方数=5/1 – 1 =4
同様に、下の4つの正方形を配置すると、base(s-a)の新しい二等辺三角形が得られます。次に同じ手順を繰り返して3つの正方形を取得し、1つの正方形が上に配置されるまで続けます。
入力
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
-
C++でN*Nチェス盤に配置できる最大のビショップ
チェス盤のサイズを示す入力Nが与えられます。ここでのタスクは、Nの任意の値について、2人のビショップが互いに攻撃できないようにNXNチェス盤に配置できるビショップの数を見つけることです。例を挙げて理解しましょう。 入力 − n =2 出力 − N * Nチェス盤に配置できる最大のビショップ− 2(上記のように) 説明 −上に示したように、矛盾しない位置は司教が配置されている場所だけです。せいぜい2X2チェス盤のビショップ。 入力 − n =5 出力 − N * Nチェス盤に配置できる最大ビショップ:8(上記のように) 以下のプログラムで使用されているアプローチは次のとおりで
-
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