【精進記録】2020年7月01日(水)

ABC160 B - Golden Coins

かかった時間:23分くらい
提出コード:

import java.util.*;

class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int X = sc.nextInt();
		sc.close();
		int ans = (int)(X/500)*1000;
		ans += ((X%500)-(X%5));
		System.out.println(ans);
	}
}

一発ACならず。というか1回はWA、次の1回はREで三度目の正直でACをもぎ取れた。良かった。

数値処理の勉強不足が前面に出てしまった感がある。今回調べてみるまで、(Javaでは)intでキャストすると小数点以下切り捨て処理されると知らなかった。なんかいい感じにintにしてくれることは知っていたが、四捨五入か切り捨てか切り上げかよく分かってなかった。

1回目の提出コード:

    import java.util.*;
    
   class Main {
   	public static void main(String[] args) {
   		Scanner sc = new Scanner(System.in);
   		int X = sc.nextInt();
   		sc.close();
   		int x_5 = X%100;
   		int ans = (int)(x_5/5)*5;
   		ans += (int)X/500*1000;
   		System.out.println(ans);
   	}
   }

2回目の提出コード:

import java.util.*;

class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String X = sc.next();
		sc.close();
		int x_u = Integer.parseInt(X.substring(0,X.length() - 2))*100;
		int x_l = Integer.parseInt(X.substring(X.length() - 2));
		int ans = x_u*2;
		x_l -= x_l%5;
		ans += x_l;
		System.out.println(ans);
	}
}

最初は除算等を駆使して攻略するつもりだったが、1回目のコードでWAになったので方針転換。文字列として受け取ってあれこれ処理しようとした。が、入力が一桁の場合を考慮してなかったのでREを引き起こす。

結局算術的な処理で攻略することにして、最終的にああなった。

この記事が気に入ったらサポートをしてみませんか?