練習 - Speed Limit

題目: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();
		}
	}
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

驗證碼 * Time limit is exhausted. Please reload CAPTCHA.

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料