AtCoder Beginner Contest 179 A〜C問題

前書き

AtCoder Beginner Contest 179 A〜C問題を解いていきました。

A問題

  • 難易度:灰
  • 時間:3分

atcoder.jp

S = input()
SS = S+'es' if S[-1]=='s' else S+'s'
print(SS)

B問題

  • 難易度:灰
  • 時間:5分

atcoder.jp

3回連続で2つのサイコロの値がゾロ目になるかを検証。

import sys
N = int(input())
D = [list(map(int, input().split())) for n in range(N)]
count_ = 0
for d in D:
  if d[0]==d[1]: count_+=1
  else: count_=0
  if count_>2:
    print('Yes')
    sys.exit()
print('No')

C問題

  • 難易度:灰
  • 時間:7分

atcoder.jp

与えられた正整数N(2≤N≤10**6)に対して、A×B+C=NとなるABCの組を答えろという問題。
一重ループが限界であるので、頭を柔らかくして考える必要があります。

A×B=N-Cとなる組を探していきます。

例えばN=5の時

  • A=1 B=4 C=1
  • A=1 B=3 C=2
  • A=1 B=2 C=3
  • A=1 B=1 C=4
  • A=2 B=2 C=1
  • A=2 B=1 C=3
  • A=3 B=1 C=2

するとある法則が見つかります。
A=kの時のABCの組数は、「A÷Bの切り上げ商-1」であると判明します。
これを下記のコードにて実装します。ACです。

import math
N = int(input())
count_=0
for n in range(1,N):
  count_+= (math.ceil(N/n)-1)
print(count_)

後書き

歴代最速15分3完です!