題目連結: https://zerojudge.tw/ShowProblem?problemid=c006

#

# c006: 10550 - Combination Lock

# 內容

你今天的任務需要來開一個鎖(如右圖)。在鎖上有一個轉盤,上面有 40 個刻度(0 到 39 來代表)。開鎖的密碼由 3 個號碼組成,例如:15-25-8。要打開這種鎖要按照以下步驟:

  1. 順時鐘方向轉轉盤 2 整圈
  2. 繼續順時鐘方向轉直到到達第一個號碼上
  3. 逆時鐘方向轉轉盤一整圈
  4. 繼續逆時鐘方向轉直到到達第二個號碼
  5. 順時鐘方向轉轉盤直到到達第三個號碼
  6. 拉開鎖頭就可以打開了

給你一開始時轉盤的位置,還有開鎖的密碼,請你算出總共要轉多少度(degree,一整圈為 360 度)才能打開鎖(順時鐘方向加逆時鐘方向)。

# 思路

記得一件事: 轉盤順時針轉的時候數字是減少的
先把轉幾圈整的加到答案裡,問題剩下:從起點順時針轉到 A,逆時針轉到 B,順時針轉到 C,起點順時針轉到 A = ((s-(a-40))%40)*9,其中 9 是每一格的角度,逆時針到 B = ((b+40)-a)%40) * 9

# 程式碼

#include<iostream>
using namespace std;
 
int main() {
        int s,a,b,c,ans;
        while(cin>>s>>a>>b>>c){
            if(s==0 && a==0 && b==0 && c==0)
              return 0;
            ans = 1080;
            ans += ((s-(a-40))%40) * 9;
            ans += (((b+40)-a)%40) * 9;
            ans += ((b-(c-40))%40) * 9;
            cout<< ans<< endl;
        }
        return 0;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay