C++ 中的映象反射
假設有一個特殊的正方形房間,四面牆壁都是鏡子。在除了西南角以外的每個角落都放置了一個接收器。這些接收器編號為 0、1 和 2。現在這個正方形房間的牆壁長度為 p,從西南角發出的雷射束第一次遇到東牆,與第 0 個接收器的距離為 q。我們需要找到雷射束第一次遇到的接收器的編號。
因此,如果 p = 2,q = 1,則情況如下:

因此,輸出將為 2,因為光線在第一次反射回左牆時遇到了接收器 2。
為了解決這個問題,我們將遵循以下步驟:
- 當 p 和 q 均為偶數時,
- p := p/2
- q := q / 2
- 如果 p 為偶數,則返回 2
- 如果 q 為偶數,則返回 0
- 返回 1。
讓我們看看以下實現,以更好地理解:
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int mirrorReflection(int p, int q) {
while(p % 2 == 0 && q % 2 == 0){
p >>= 1;
q >>= 1;
}
if(p % 2 == 0) return 2;
if(q % 2 == 0) return 0;
return 1;
}
};
main(){
Solution ob;
cout << (ob.mirrorReflection(2, 1));
}輸入
2 1
輸出
2
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP