小明工作的大樓只有一部電梯,上下班期間常常因人潮而需排隊久候。早上他因為怕遲到,總是選擇走樓梯以節省時間。
有一天小明在報導中發現,電梯上升一層樓耗電 3 度,下降一層耗電 2 度電,看到電梯如此龐大的耗電量,愛地球的小明決定以後都開始走樓梯。
小明心裡計算著,電梯每天從一樓開始運作,一天上上下下那麼多次,到底電梯一天的耗電量是多少,請你幫他寫一支程式計算。
範例測資
範例輸入 | 範例輸出 |
---|---|
輸入第一行為一個整數 N (2 ≤ N ≤ 5000) 代表一天中電梯的升降次數 第二行有 N 個正整數 Xi (1 ≤ Xi ≤ 1000,1 ≤ i ≤ N) 表示電梯停留的樓層。 | 輸出一行表示電梯一天升降的耗電量。 |
4 4 5 6 7 | 18 |
7 8 4 5 2 10 4 6 | 80 |
8 21 19 17 15 13 11 9 7 | 88 |
解題思路
可以先宣告一個電梯目前位置的變數,預設為 1,每一次收到樓層資料的時候跟目前位置做比較,如果電梯在往上的話就是答案 += 新的樓層 – 目前樓層再乘 3,如果是往下就是答案 += 目前樓層-新樓層再乘 2,當然也可以使用 abs 直接做一模一樣的減法。
範例程式碼-ZeroJudge G497: 電梯 (Elevator)
#include <iostream>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N, pos = 1, ans = 0;
cin >> N;
for (int i = 0; i<N; i++)
{
int tmp;
cin >> tmp;
if (tmp > pos)
{
ans += (tmp-pos) * 3;
pos = tmp;
}
else
{
ans += (pos-tmp) * 2;
pos = tmp;
}
}
cout << ans << "\n";
}
//ZeroJudge G497
//Dr. SeanXD