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!