AtCoder Beginner Contest 116・118・122・123 A・B問題

前書き

AtCoder Beginner Contest 116・118・122・123 A・B問題を解きました。

A問題

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

atcoder.jp

A,B,C=map(int,input().split())
print(int(A*B/2))

B問題

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

atcoder.jp

まず問題を正しく理解するのに8分ほどかかってしまったので反省。
奇数→ 3*A+1、偶数→ A / 2の計算をしながら、Aは変化します。
1度代入された値に再度代入されるに、ループを終了します。

Am = An (m > n) となった時 => 1度代入された値に再度代入される

A1 → 初期値であり、この時点で1度代入の経験があるとみなします。

import sys
s=int(input())
lis=[0]*1000000
lis[s-1]=1
def kisuu(n): return 3*n+1
def guusuu(n): return int(n/2)

for j in range(1,1000001):
  if s%2==0: s=guusuu(s)
  else: s=kisuu(s)
  lis[s-1]+=1
  if lis[s-1]>1: 
    print(j+1)
    sys.exit()

A問題

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

atcoder.jp

A,B=map(int,input().split())
if B%A==0: print(A+B)
else: print(B-A)

B問題

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

atcoder.jp

N,M=map(int,input().split())
Mlis = [0]*M
for i in range(N):
  KA = list(map(int,input().split()))
  K = KA[0]
  A = KA[1:]
  for a in A:
    Mlis[a-1]+=1
count=0
for j in Mlis:
  if j==N:count+=1
print(count)

A問題

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

atcoder.jp

i = input()
if i=='A': print('T')
if i=='T': print('A')
if i=='C': print('G')
if i=='G': print('C')

B問題

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

atcoder.jp

最初、部分文字列を定義を勘違いして4分ほどロスしてしまいました。

S=input()
count,_max=0,0
for i in range(len(S)):
  if S[i]=='A'or S[i]=='G'or S[i]=='C'or S[i]=='T':
    count+=1
    _max=max(count,_max)
  else: count=0   
print(_max)

A問題

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

atcoder.jp

import itertools,sys
D = [int(input()) for i in range(5)]
K = int(input())
_D = itertools.permutations(D, 2)
for d in _D:
  if abs(d[0]-d[1])>K:
    print(':(')
    sys.exit()
print('Yay!')

B問題

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

atcoder.jp

注文時間の総計が最短となるメニューの注文順を解きます。
1〜4番目の順番はどうでも良いので、最後に注文するメニューは何にすべきかが本質的な問いです。

最後に注文するメニュー以外は10の位で切り上げして合計します。
最後に注文するメニューはそのまま加算します。
この結果最も注文時間の総計が小さくなる順番を答えとします。

import itertools,sys,math
D = [int(input())/10 for i in range(5)]
_min=10000000000
for i in range(4):
  count = 0
  for j in range(5):
    count+=math.ceil(D[j])*10
  count-=(math.ceil(D[i])-D[i])*10
  _min=min(count,_min)
print(int(_min))