格式化

廣告

廣告2

2012年9月22日 星期六

[JAVA教學範例] UVa ACM 12468 a518: 12468 - Zapping

UVa ACM 12468 a518: 12468 - Zapping



內容 :

我是個超級電視迷,但是我不喜歡固定看一個頻道,我經常在不同頻道間轉來轉去。

我的狗咬壞了我的遥控器,現在數字鍵都不能用了,只剩兩個按鈕可以換頻道,一個往上切一個頻道 (△ 按鈕),一個往下切一個頻道 (▽ 按鈕)。這樣真的很煩,因為如果我要從頻道 3 換到頻道 9 我得按 6 次 △ 按鈕。

我的電視有 100 個頻道,號碼為 0 到 99。它們是循環的,也就是從 99 台再按一下 △ 就會回到第 0 台。同理,從第 0 台按一下 ▽ 就會回到 99 台。

幫我寫個程式,讓我輸入現在正在看的頻道和我要切過去的頻道,它便告訴我最少需要按幾次按鈕。

輸入說明 :
輸入含有多筆測資 (最多 200 筆)。

每筆測資含有兩個整數 a 與 b 於一行。a 是我現在看的頻道而 b 則是我要切過去的頻道 (0 ≤ a, b ≤ 99)。

最後一行有兩個 -1,請不要處理。

輸出說明 :
對於每筆測資,輸出一個整數於一行 — 也就是我最少要按幾次按鈕才能切到新頻道。(記住,我只有 △ 和 ▽ 兩個按鈕可用)。

範例輸入 :
3 9
0 99
12 27
-1 -1

範例輸出 :
6
1
15

提示 :
出處 :UVa ACM 12468 (管理:snail)

範例答案 :


import java.io.IOException;
import java.util.Scanner;


 
public class eee { 
    @SuppressWarnings("resource")
 public static void main(String[] args) throws IOException { 

     Scanner read = new Scanner(System.in);
     int a;
     int b;
     int fast=0;
     int flip=0;
     
     while(read.hasNext())
     {
      a=read.nextInt();
      b=read.nextInt();
      if(a==-1&&b==-1) break;
      else
      {
       if(a>b)
       {
        fast=a-b;
        flip=(99-a)+b+1;
        if(flip<fast)fast=flip;
       }
       if(a<b)
       {
        fast=b-a;
        flip=(a)+(99-b)+1;
        if(flip<fast)fast=flip;
       }
       if(a==b){fast=0;}
      }
      System.out.println(fast);
     }
    }
}