C++で3つの連続する整数の合計として数値を記述できるかどうかを確認します
このセクションでは、数値をツリーの連続した数値として表すことができるかどうかを確認します。数値が27であるとします。これは、8 + 9+10として表すことができます。
これは、2つの異なるアプローチで解決できます。最初のアプローチはナイーブアプローチです。そのアプローチでは、i +(i + 1)+(i + 2)が数値と同じかどうかを確認する必要があります。もう1つの効率的なアプローチは、数値が3で割り切れるかどうかを確認することです。数xを3つの連続する1で表すことができるとすると、x =(y --1)+ y +(y + 1)=3yとなります。したがって、数値は3で割り切れる必要があります。
例
#include <iostream> using namespace std; bool hasThreeNums(int n) { if(n % 3 == 0){ return true; } return false; } int main() { int num = 27; if(hasThreeNums(num)){ cout << "Can be represented"; }else{ cout << "Cannot be presented"; } }
出力
Can be represented
-
数値がC++で2つの三角数の合計として表現できるかどうかを確認します
このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #
-
数値をチェックするプログラムは、Pythonでは異なる階乗数値の合計として記述できます。
正の数nがあるとすると、nが一意の正の階乗数の合計として記述できるかどうかを確認する必要があります。 したがって、入力がn =144のような場合、出力は4のようにTrueになります。 + 5! =24 + 120 =144 これを解決するには、次の手順に従います- 事実:=1 res:=新しいリスト x:=2 事実<=n、実行 resの最後にファクトを挿入 ファクト:=ファクト* x x:=x + 1 res -1から0の範囲サイズのiの場合、1ずつ減らします。 =res [i]の場合、 n:=n --res [i]