對於輸入的兩個從原點出發的向量,如果要以最小的角度旋轉第一個向量來讓兩個向量指向同一個方向,那應該往哪個方向轉呢?
以下為會得到 WA 的參考解法,請用 $2$ 以內的編輯距離將這段程式碼改對吧!
#include <bits/stdc++.h>
using namespace std;
int cmp(int x, int y, int z)
{
if (x < 0) return y;
else if (x > 0) return z;
else return 0;
}
#define int long long
const int CLOCKWISE = -1, PARALLEL = 0, COUNTERCLOCKWISE = 1;
string output[] = { "clockwise", "parallel", "counterclockwise" };
main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
int cross = a * d - b * c;
int sign = cmp(cross, CLOCKWISE, COUNTERCLOCKWISE);
cout << output[sign + 1] << '\n';
}
輸入四個正整數 $a, b, c, d$ ,代表第一個向量是 $(a, b)$ 、第二個向量是 $(c, d)$ 。
如果兩個向量一開始就是平行的,輸出 parallel
。
否則若順時針轉所需的角度較小,輸出 clockwise
。
如果是逆時針轉所需的角度較小,輸出 counterclockwise
。
IOICamp 2023 Day1 pB
No. | Testdata Range | Score |
---|---|---|
1 | 0~18 | 100 |