0
0

More than 3 years have passed since last update.

三井住友信託銀行プログラミングコンテスト2019に参加してみた

Posted at

感想

AtCoderのコンテスト初参加。結構疲れた。てかムズイ。普通に数学的な発想が求められるんだな〜。
解ければ快感、解けなければうつ病。
https://atcoder.jp/contests/sumitrust2019
以下自分の回答

A November 30

M1,D1 = gets.chomp.split.map(&:to_i)
M2,D2 = gets.chomp.split.map(&:to_i)

ret = 0

if M1 == 12
  if D1 == 31
    ret = 1
  end
end

if M1 + 1 == M2 
  ret = 1
end

puts ret

D2が1かどうか判定すれば良かっただけなのに、なにしてるんだろうか。ぐぬぬ。

B Tax Rate

N = gets.to_i

X = ":("

a = N * 100 / 108
if ( N * 100 ) % 108 != 0
  a += 1
end

if a * 108 / 100 == N
  X = a
end
puts X

結構迷ってしまった。てか正規のやり方なのか怪しい。
Xに文字列いれた上に数値入れてグロい。Ruby凄いな。

C 100 to 105

X = gets.to_i

N = X / 100

can = 0

for i in 0..N
  x = X - i * 100
  if 0 <= x && x <= 5 * i
    can = 1
    break
  end
end

puts can

特にコメントなし(実際に解いてる時は一瞬で解けた嬉しさで内心ウッキウキだった)

D Lucky PIN

N = gets.to_i
S = gets.chomp

count = 0
for i in 0..9
  a = S.index(i.to_s)
  if a != nil
    for j in 0..9
      b = S.index(j.to_s, a+1)
      if b != nil
        for k in 0..9
          c = S.index(k.to_s, b+1)
          if c != nil
            count += 1
          end
        end
      end
    end
  end
end

puts count

最初30000個を3重ループして時間オーバーになった(あたりまえやん)
ここまでは100分以内にできた。

E Colorful Hats 2

ここから後日解き直した。

N = gets.to_i
A = gets.split.map &:to_i

t = [ 0, 0, 0 ]

result = 1
for i in 0..N-1
  if t.count( A[i] ) == 0
    result = 0
    break
  end
  result = ( result * t.count( A[i] ) ) % 1000000007
  for j in 0..2
    if t[j] == A[i]
      t[j] += 1
      break
    end
  end
end
puts result

これみんな簡単って言ってるのにわからなくて泣いた。
それぞれの帽子の数を保持して、その値と一致した分だけ場合分けができるという発想が無かった。
ブログラミングじゃなくても解けなかったと思う。悲しい。理系とは何だったのか。

F Interval Running

T = gets.split.map(&:to_i)
A = gets.split.map(&:to_i)
B = gets.split.map(&:to_i)

b = ( T[0] * A[0] + T[1] * A[1] ) - ( T[0] * B[0] + T[1] * B[1] )
if b == 0
  puts "infinity"
else
  a = T[0] * ( A[0] - B[0] )
  if a * b > 0
    puts 0
  else
    c = ( a / b ) * -2
    if a % b != 0
      c -= 1
    end
    puts c
  end
end

E問題で精神がやられて変数名とか見づらいしif文もおかしいけど一応解けた。
実際のコーディングだったら絶対に修正する。
A問題では変数に1つずつ入れているのにF問題では配列にいれる謎。(表記揺れってやつになるのかな)
自分で書いといてなんだけど*-2とかいう箇所気持ち悪すぎる。
横軸時間、縦軸距離のグラフを書くのがわかりやすかった。

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