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

C++のゼロから数直線でXに到達するためのジャンプの数を見つけます


整数Xがあるとします。0からXに到達するために必要なジャンプの最小数を見つける必要があります。最初に行われるジャンプの長さは1単位で、連続する各ジャンプの長さは前のジャンプよりも正確に1単位長くなります。各ジャンプで左または右に移動できます。したがって、X =8の場合、出力は4になります。0→-1→1→4→8が可能なステージです。

注意深く観察すれば、それを言うことができます

  • 常に正しい方向にジャンプしている場合は、n回ジャンプすると、ポイントp =1 + 2 +3+…+nになります
  • 左にジャンプできる場合は、k番目のジャンプでポイントp –2kになります。
  • どちらのジャンプを左に、どちらを右にジャンプするかを慎重に選択すると、n回のジャンプの後、n(n + 1)/ 2と–(n *(n + 1)/2の間のポイントになります。 )、n(n + 1)/2と同じパリティ。

#include<iostream>
#include<cmath>
using namespace std;
inline int sumOneToN(int n) {
   return (n * (n + 1)) / 2;
}
int jumps(int n) {
   n = abs(n);
   int ans = 0;
   while (sumOneToN(ans) < n or (sumOneToN(ans) - n) & 1)
      ans++;
   return ans;
}
int main() {
   int n = 9;
   cout << "Number of jumps: " << jumps(n);
}

出力

Number of jumps: 5

  1. C ++を使用して、指定されたポイントから可能な四辺形の数を見つけます

    四辺形は、ユークリッド平面幾何学で4つの頂点と4つのエッジを持つポリゴンを形成します。名前4-gonなど。四辺形の他の名前に含まれ、正方形、表示スタイルなどとしても知られています。 この記事では、与えられた点から可能な四辺形の数を見つけるためのアプローチを説明します。この問題では、デカルト平面に提供された4つの点(x、y)を使用して作成できる四辺形の数を調べる必要があります。だからここに与えられた問題の例があります- Input : A( -2, 8 ), B( -2, 0 ), C( 6, -1 ), D( 0, 8 ) Output : 1 Explanation : One quadr

  2. C++で線の中点を見つけるプログラム

    この問題では、線の始点と終点の2つの点AとBが与えられます。私たちの仕事は、C++で線の中点を見つけるプログラムを作成することです。 問題の説明 −ここでは、開始点と終了点がA(x1、y1)とB(x2、y2)の線があります。そして、線の中点を見つける必要があります。 問題を理解するために例を見てみましょう 入力 a(x1, y1) = (4, -5) b(x2, y2) = (-2, 6) 出力 (1, 0.5) 説明 (x1 + x2)/2 = 4 - 2 / 2 = 1 (y1 + y2)/2 = -5 + 6 / 2 = 0.5 ソリューションアプローチ この問題を解決する