題目連結: https://zerojudge.tw/ShowProblem?problemid=c006
#
# c006: 10550 - Combination Lock
# 內容
你今天的任務需要來開一個鎖(如右圖)。在鎖上有一個轉盤,上面有 40 個刻度(0 到 39 來代表)。開鎖的密碼由 3 個號碼組成,例如:15-25-8。要打開這種鎖要按照以下步驟:
- 順時鐘方向轉轉盤 2 整圈
- 繼續順時鐘方向轉直到到達第一個號碼上
- 逆時鐘方向轉轉盤一整圈
- 繼續逆時鐘方向轉直到到達第二個號碼
- 順時鐘方向轉轉盤直到到達第三個號碼
- 拉開鎖頭就可以打開了
給你一開始時轉盤的位置,還有開鎖的密碼,請你算出總共要轉多少度(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; | |
} |