ホームページ > バックエンド開発 > C++ > C++ では、2 点間の整数点の数を数えます。

C++ では、2 点間の整数点の数を数えます。

WBOY
リリース: 2023-09-02 21:57:07
転載
1065 人が閲覧しました

C++ では、2 点間の整数点の数を数えます。

このチュートリアルでは、指定された 2 点間の整数点の数を見つけるプログラムを作成します。

指定された 2 つの点の間の点の数は、gcd(abs(x2), abs(y1-y2)) - 1 になります。

接続線が x 軸に平行な場合、整数点の数は abs(y1 - y2) - 1 になります。

接続線が y 軸に平行な場合、整数点の数は abs(x1 - x2) - 1 になります。

2 つの点の x 座標が等しい場合、それらは x 軸に平行です。 2 つの点の y 座標が等しい場合、それらは y 軸に平行です。

例を見てみましょう。

入力

pointOne = [1, 5]
pointTwo = [1, 3]
ログイン後にコピー

出力

1
ログイン後にコピー

アルゴリズム

  • 2 つの点を初期化します。
  • それらが X 軸に平行であるかどうかを確認します。
  • それらが x 軸に平行である場合は、公式 abs(y1 - y2) - 1 を使用します。
  • Y 軸に平行かどうかを確認します。
  • それらが y 軸に平行である場合は、公式 abs(x1 - x2) - 1 を使用します。
  • どの軸にも平行でない場合は、gcd(abs(x1-x2), abs(y1- y2)) - 1 の式を使用します。
  • 結果を計算して印刷します。

実装

以下は、C

#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
   if (b == 0) {
      return a;
   }
   return gcd(b, a % b);
}
int getCount(int pointOne[], int pointTwo[]) {
   if (pointOne[0] == pointTwo[0]) {
      return abs(pointOne[1] - pointTwo[1]) - 1;
   }
   if (pointOne[1] == pointTwo[1]) {
      return abs(pointOne[0] - pointTwo[0]) - 1;
   }
   return gcd(abs(pointOne[0] - pointTwo[0]), abs(pointOne[1] - pointTwo[1])) - 1;
}
int main() {
   int pointOne[] = {1, 3}, pointTwo[] = {10, 12};
   cout << getCount(pointOne, pointTwo) << endl;
   return 0;
}
ログイン後にコピー

出力

上記のアルゴリズムの C での実装です。上記のコードを実行すると、次の結果が得られます。以下の結果。

えええええ

以上がC++ では、2 点間の整数点の数を数えます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート