LoginSignup
0
0

More than 1 year has passed since last update.

【Java】AtCoderのABC-200に参加しました(レート:278→264)。

Last updated at Posted at 2021-05-08

こんばんは。

2021/5/8に、AtCoderのABC-200に参加しました。
レートは以下の通りとなっています。

image.png

C問題でつまづきました。
レートは278→264にダウン!順位は6646/8577でした。
おーっ、あーっ、ぐぅーっ、という感じですね。

A問題

世紀を求めるプログラム。念入りにテストしてしまいましたが、まあ何とか。

Main.java
import java.util.Scanner;

public class Main{

public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
  int n = sc.nextInt();
  System.out.println((n-1)/100+1);

}
}

B問題

ある数字、Nについて、K回以下の処理を繰り返す。
・Nが200の倍数だったら、200で割る。
・200の倍数でなかったら、末尾に200を付与する(123だったら、123200にする)

ここは言われたとおりに、まあなんとか。
でも、200を付与するのに、文字列型に変換して付与するのはださいですね。
1000倍して、200を足す方がスマートですね。
後で振り返るのも大事です。

Main.java
import java.util.Scanner;

public class Main{

public static void main(String args[]){
  Scanner sc = new Scanner(System.in);
  long n = sc.nextLong();
  long k = sc.nextLong();
  long nwk = n;
  String nwks = String.valueOf(n);
  for(int i=0;i<k;i++){
    if(nwk%200==0){
      nwk = nwk/200;
    }else{
      nwks = nwks + "200";
      nwk = Long.parseLong(nwks);
    }
    nwks = String.valueOf(nwk);
  }
  System.out.println(nwk);

}
}

C問題

Nこの文字列Ai~Anを入力。
Ai-Ajが200の倍数、が成り立つ組み合わせはいくつあるか。
タイムアウトだってわかってはいたけれど、いいロジックが思いつかず・・入力時に、入力済みの全文字列を比較する処理をまずは組んでみました。
当然TLE。

次に、下2桁が同じものは、「条件が成立する可能性がある組み合わせ」と考え100個の配列に、下2桁が同じものを分類し、最期にまとめて計算する方法を取ってみましたが、タイムアウトに加え実行時エラーで発生し終了3分前に敗北。
でした。

感想

解けなかったC問題を、例えば明日解説を参考に解いてみるとか、もっとした方が良いんだろうなと思うのですが、時間も限られているので気の向くまま学習を進めます。
会社でも、競技プログラミングの本をおすすめされていたので、やっぱり読んでみようかな。

ではまた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0