AtCoder Beginner Contest 179 A〜C問題
前書き
AtCoder Beginner Contest 179 A〜C問題を解いていきました。
B問題
- 難易度:灰
- 時間:5分
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分
与えられた正整数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完です!