題目:Bill和Ted在旅行時汽車里程表壞了,因此他們不知道自己駕車走了多少英里。幸運的是,Bill有一個正在執行的跑錶,因此可以記錄他們的速度和駕駛時間。然而,這個跑錶記錄的方式有些古怪,因些他們需要計算總的駕駛距離。
例如他們的跑錶顯示如下:
| 每小時速度(英里) | 總的耗費時間(小時) |
| 20 | 2 |
| 30 | 6 |
| 10 | 7 |
這表示一開始的2小時他們以20英里的時速行駛,然後的6-2=4小時以30英里的時速行駛,再以後的7-6=1小時以10英里的時速行駛,所以行駛的距離是(2)(20)+(4)(30)+(1)(10)=170英里。總的耗費時間從他們旅行開始進行計算,而不是從跑錶開始計數開始計算。
輸入:輸入由一個或多個資料集合組成。每個資料集合開始的第一行為一個整數n,後面是n對值,每對一行。每對的第一個值s是時速,第二個值t是總的耗費時間。s和t都是整數,t的值總是增序。n的值取-1表示輸入結束。
輸出:對於個一個資料集合,輸出行駛距離,然後空格,輸出單字miles。
import java.util.Scanner;
public class SpeedLimit {
public static void main(String[] args) {
int n, s, t, x, ans, i;
Scanner scanIn = new Scanner(System.in); // 輸入第一筆資料集合個數
n = scanIn.nextInt();
while (n > 0) {
ans = x = 0;
for (i = 0; i < n; i++) {
scanIn = new Scanner(System.in); // 輸入每筆資料內的時速與總的耗費時間
s = scanIn.nextInt();
t = scanIn.nextInt();
ans += (t - x) * s;
x = t;
}
System.out.printf("%d miles\n", ans);
scanIn = new Scanner(System.in); // 輸入下一筆資料集合個數
n = scanIn.nextInt();
}
}
}
鏈結到這頁!