Maison >développement back-end >C++ >En C++, comptez le nombre de points entiers entre deux points
Dans ce tutoriel, nous allons écrire un programme qui trouve le nombre de points entiers entre deux points donnés.
Le nombre de points entre deux points donnés sera pgcd(abs(x2), abs(y1-y2)) - 1.
Si la ligne de connexion est parallèle à l'axe des x, le nombre de points entiers sera abs(y1 - y2) - 1.
Si la ligne de connexion est parallèle à l'axe y, le nombre de points entiers sera abs(x1 - x2) - 1.
Si les coordonnées x de deux points sont égales, elles sont parallèles à l'axe des x. Si les coordonnées y de deux points sont égales, elles sont parallèles à l’axe y.
Voyons un exemple.
Entrée
pointOne = [1, 5] pointTwo = [1, 3]
Sortie
1
Ce qui suit est l'implémentation de l'algorithme ci-dessus en 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; }
Si vous exécutez le code ci-dessus, vous obtiendrez les résultats suivants.
8
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!