ABC083B - Some Sumsを解いてきました。
どうも、じょんです。今日はAtcoder Biginners SelectionのABC083B - Some Sumsを解いたので、このことついて書きます。前までC問題やってたのに何でBに戻ってるかというと、ABC159でB問題にすら時間をとられてしまったため、これはマズイと思って復習しようと思った次第であります。ちなみに、コーナーケース(例外のケース)を探すのが特に苦手な模様。
いつも通りのリンク:
https://atcoder.jp/contests/abs/tasks/abc083_b
以下、ネタバレ注意!
一応、問題文も載せときます。
以上 以下の整数のうち、 進法での各桁の和が 以上 以下であるものの総和を求めてください。
短いですなw
さて、この問題を考える上で問題となるのは、どうやって各桁の和を比較していくのかでしょう(少なくとも僕にとってはこれが一番の問題だったんや)。もっといい方法があるかもしれませんが、僕が思いついたのは、今調べている数字を一回char(一文字だけのデータ)nの配列にして、それらを数のデータに戻して足し合わせて比較するというものです。どうやら割とよくでる考え方らしいので、慣れとかなきゃいけんな~。
今回はスライド作るほど複雑なものでもないので、コード載せときます。
- import java.util.*;
- import java.math.RoundingMode;
- import java.math.BigDecimal;
- public class Main{
- public static void main(String args){
- Scanner sc = new Scanner(System.in);
- int n = sc.nextInt();
- int a = sc.nextInt();
- int b = sc.nextInt();
- int ans = 0;
- for(int i = a; i <= n; i++) {
- int sum = 0;
- String now_str = String.valueOf(i);
- char now_char = now_str.toCharArray();
- for(int j = 0; j < now_char.length; j++) {
- sum+=Integer.parseInt(String.valueOf(now_char[j]));
- }
- if(a <= sum && sum <= b) {
- ans+=i;
- }
- }
- System.out.println(ans);
- }
- }
では、今回はこれまで!さいなら~