Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 8410 | Accepted: 3423 |
Description
When you fly ACM Class Code You'll earn First Class F Actual mileage + 100% mileage Bonus Business Class B Actual mileage + 50% mileage Bonus Economy Class Y 1-500 miles 500 miles 500+ miles Actual mileage
Input
Output
Sample Input
Beijing Tokyo 1329 F Shanghai Wuhan 433 Y 0 #
Sample Output
3158
Hint
此题的关键在于每次计算Bonus的时候进行四舍五入
import java.util.*; import java.text.*; class FRecord { String from; String to; int miles; String type; public FRecord(String a, String b, int c, String d) { this.from = a; this.to = b; this.miles = c; this.type = d; } } public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); ArrayList record = new ArrayList(); while(true) { String tmp = cin.nextLine(); if(tmp.equals("#")) break; else if(tmp.equals("0")) { int total = getSummary(record); record.clear(); System.out.println(total); } else { String[] str = tmp.split(" "); FRecord fr = new FRecord(str[0], str[1], Integer.valueOf(str[2]).intValue(), str[3]); record.add(fr); } } } private static int getSummary(ArrayList record) { int result = 0; Iterator iter = record.iterator(); while(iter.hasNext()) { FRecord fr = (FRecord)iter.next(); if(fr.type.equals("F")) { result += fr.miles * 2; DecimalFormat df = new DecimalFormat("#"); result = Integer.valueOf(df.format(result)).intValue(); } else if(fr.type.equals("B")) { result += fr.miles; result += (fr.miles + 1)/2; DecimalFormat df = new DecimalFormat("#"); result = Integer.valueOf(df.format(result)).intValue(); } else { if(fr.miles > 500) { result += fr.miles; DecimalFormat df = new DecimalFormat("#"); result = Integer.valueOf(df.format(result)).intValue(); } else { result += 500; DecimalFormat df = new DecimalFormat("#"); result = Integer.valueOf(df.format(result)).intValue(); } } } return result; } }