Problem:
水道料金

松平さんは、普段からエコに気を付けて生活をしています。先月の水道料金が 4280 円となり、いつも目標としている 4000 円を超えてしまったので、今月は節水に努めてきました。先月と比べて水道料金はどのくらい節約できたのでしょうか。

今月の使用水量 w [m3] を入力とし、先月の水道料金である 4280 円と比較して、どのくらい水道料金を節約できたかを出力するプログラムを作成してください。

なお、水道料金は次のように計算されます。

(水道料金) = (基本料金) + (水量による料金)

水量による料金は下表のように使用量に応じて計算されます。

段階

水量

料金

第 1 段階料金

10 [m3] まで

基本料金 1150 円

第 2 段階料金

10 [m3] 超過 20 [m3] まで

1 [m3] あたり 125 円

第 3 段階料金

20 [m3] 超過 30 [m3] まで

1 [m3] あたり 140 円

第 4 段階料金

30 [m3] 超過分

1 [m3] あたり 160 円

例えば、使用水量 40 [m3] の場合は、
基本料金 1150 円(第 1 段階) + 10 [m3] × 125 円(第 2 段階) + 10 [m3] × 140 円(第 3 段階) + 10 [m3] × 160 円(第 4 段階) = 5400 円

となります。

Input

複数のデータセットの並びが入力として与えられます。入力の終わりは -1 ひとつの行で示されます。

各データセットとして、 今月の使用水量を表す整数 w (0 ≤ w ≤ 100) が１行に与えられます。

データセットの数は 200 を超えません。

Output

入力データセットごとに、先月の水道料金との差を1行に出力します。

Sample Input

29
40
0
-1

Output for the Sample Input

620
-1120
3130

Solution in JAVA (judge verdict: Accepted)


import java.io.*;
import java.math.BigDecimal;
import java.util.*;


// 2011/10/22

//0216@¹¿à
public class Main {

	// C return falseÅ¨µÜ¢
	boolean main() throws IOException {

		int[] ir = readIntArray();
		int w = ir[0];
		if (w == -1)
			return false;

		int r;
		if (w > 30) {
			r = 1150 + 1250 + 1400+ (w-30)*160;
		}
		else if (w > 20) {
			r = 1150 + 1250 + (w-20)*140;
		}
		else if (w > 10) {
			r = 1150 + (w-10)*125;
		}
		else {
			r = 1150;
		}
		
		
		// ðÌ\¦
		System.out.printf("%d\n", 4280 - r);
		
		return true; // ³íI¹ Ö
	}
	

//	private final static boolean DEBUG = true;  // debug
	private final static boolean DEBUG = false; // release

	public static void main(String[] args) throws IOException {

		if (DEBUG) {
			log = System.out;
			
			String inputStr = "29:0:";

			inputStr = inputStr.replace(":", "\n");

			reader = new BufferedReader(new StringReader(inputStr)); 

		}
		else {
			log = new PrintStream(new OutputStream() { public void write(int b) {} } ); // «ÌÄ
			reader = new BufferedReader(new InputStreamReader(System.in)); // R\[©ç
		}
		
		//int N = readIntArray()[0];

		for(int i = 0; /*i < N*/; i++) {
			boolean b = new Main().main();
			if (!b)
				break;
		}		
		
		reader.close();
	}

	
	static PrintStream log;
	static BufferedReader reader;
	

	// WüÍæè1sªÌXy[XæØèÌ®lðÇÞ
	// EOFÌêÍnullðÔ·
	private static int[] readIntArray() throws IOException {
		
		String s = reader.readLine();
		if (s == null)
			return null;
		String[] sp = s.split(" ");
		int[] a = new int[sp.length];
		for(int i = 0; i < sp.length; i++) {
			a[i] = Integer.parseInt(sp[i]);
		}
		return a;
	}
		
}