在 C++ 中如何確定一條直線穿過多少個單位面積的正方形?
目標是確定一條給定兩個端點 (x1,y1) 和 (x2,y2) 的直線將穿過多少個正方形。
為了找到我們的直線穿過多少個正方形,我們需要找到:x 座標的差 (dx) = x2-x1,y 座標的差 (dy) = y2-y1,將 dx 和 dy 相加並減去它們的 最大公約數 (result) = dx + dy – gcd(dx,dy)。
unitSquares(int x1, int y1, int x2, int y2) 函式接受四個值 x1、y1 和 x2、y2。計算 x2 和 x1 的絕對差以及 y2 和 y1 的絕對差。將 dx 和 dy 相加並減去 dx、dy 的最大公約數。結果儲存在 ans 中並返回給 main 進行列印。
int unitSquares(int x1, int y1, int x2, int y2){
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int ans = dx + dy - __gcd(dx, dy);
return ans;
}示例
讓我們看一下以下實現,以確定一條直線將穿過多少個單位面積的正方形。
#include<iostream>
#include <algorithm>
using namespace std;
int unitSquares(int x1, int y1, int x2, int y2){
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int ans = dx + dy - __gcd(dx, dy);
return ans;
}
int main(){
int x1 = 3, y1 = 3, x2 = 12, y2 = 6;
cout<<"The line passes through "<<unitSquares(x1, y1, x2, y2)<<" squares ";
return 0;
}輸出
以上程式碼將產生以下輸出:
The line passes through 9 squares
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP