I haven't done competitive programming lately, so I wanted to solve a problem as simple as a brain teaser.
I have already solved ABC (AtCoder Beginner Contest) of AtCoder, Speaking of which, I hadn't done a collection of questions for AtCoder beginners called ABS (AtCoder Beginners Selection), so I took this opportunity to solve all 10 questions. ..
PracticeA: Welcome to AtCoder Just answer according to the question sentence! There is no problem if simple input / output processing can be performed.
a = int(input())
b,c = map(int, input().split())
s = str(input())
print(a+b+c, s)
ABC086A: Product In the same way, answer according to the question sentence.
a,b = map(int, input().split())
sum = a*b
if sum % 2 ==0:
print("Even")
else:
print("Odd")
ABC081A: Placing Marbles Similarly, answer according to the question text.
s = str(input())
print(s.count('1'))
ABC081B: Shift only I rushed into the B problem of ABC. I will use my head a little from this area. When you understand what to look for from the problem statement, All you have to do is factor each $ A_1, \ dots, A_N $ into prime factors and find the smallest powerful number of 2. I implemented it with reference to here.
import collections
def prime_factorize(n):
a = []
while n % 2 == 0:
a.append(2)
n //= 2
f = 3
while f * f <= n:
if n % f == 0:
a.append(f)
n //= f
else:
f += 2
if n != 1:
a.append(n)
return a
n = int(input())
l = list(map(int, input().split()))
prime_list = [ dict(collections.Counter(prime_factorize(i)).items()) for i in l ]
try:
count_2_list = [ d[2] for d in prime_list ]
print(min(count_2_list))
except KeyError:
print(0)
The code is getting longer. Since it asks for the power of 2, it was smarter to convert it to a binary number and process it. Reference) https://qiita.com/watyanabe164/items/5c26fd9d8d244c5f2483
ABC087B: Coins Since A, B, and C were 50 or less, I simply searched all.
def equal_x_count(p,q,r,z):
count = 0
for i in range(p+1):
for j in range(q+1):
for k in range(r+1):
if 500*i + 100*j + 50*k == z:
count += 1
return count
a = int(input())
b = int(input())
c = int(input())
x = int(input())
print(equal_x_count(a,b,c,x))
ABC083B: Some Sums Convert n assigned as a numeric type to a string type, The character string extracted for each digit was digitized again and processed.
n, a, b = map(int, input().split())
count = 0
for i in range(n+1):
sum_each_digit = sum([ int(j) for j in str(i)])
if a <= sum_each_digit and sum_each_digit <= b:
count += i
print(count)
ABC088B: Card Game for Two Assign input to the list and sort the list in descending order Add even numbers (0,2,4), subtract odd numbers (1,3,5)
n = int(input())
a = list(map(int, input().split()))
sorted_a = sorted(a, reverse=True)
alice_list = []
bob_list = []
for i in range(n):
if i % 2 == 0:
alice_list.append(sorted_a[i])
else:
bob_list.append(sorted_a[i])
d = sum(alice_list) - sum(bob_list)
print(d)
ABC085B: Kagami Mochi It's easy if you convert what you get in the list into a set and count the number of elements.
n = int(input())
d = [int(input()) for _ in range(n)]
print(len(set(d)))
ABC085C: Otoshidama All you have to do is search through the entire search.
n, y = map(int, input().split())
for i in range(n+1):
for j in range(n-i+1):
if 10000*i + 5000*j + 1000*(n-i-j) == y:
print(i,j,n-i-j)
exit()
print(-1,-1,-1)
Pay attention to the end of the input S, cut off the end if there is a match, and put S in it. Repeat this.
s = str(input())
while True:
if s[-5:] == 'dream' or s[-5:] == 'erase':
s = s[:-5]
elif s[-6:] == 'eraser':
s = s[:-6]
elif s[-7:] == 'dreamer':
s = s[:-7]
elif s == '':
print('YES')
break
else:
print('NO')
break
ABC086C: Traveling If you were at the coordinates ($ x, $ y) at time $ t_n, you can see if you can move to the coordinates ($ x', $ y') at time $ t_ (n + 1). Let's consider the case of 1 <= t <= n.
--Is there enough time to move to the coordinates ($ x', $ y')? -Is the shortest time that can be moved the same as the travel time? ――If you consume two times, it will return to the original position.
If you read the above prerequisites from the problem statement, you can implement it with the following code.
import numpy as np
import sys
n = int(input())
l = [ list(map(int, input().split())) for _ in range(n)]
l.insert(0, [0,0,0])
for i in range(n):
d = np.array(l[i+1]) - np.array(l[i])
time, move = d[0], abs(d[1])+abs(d[2])
if move > time or (time - move) % 2 != 0:
print('No')
sys.exit()
print('Yes')
Thanks to the implementation of numpy in AtCoder, it was relatively easy to implement.
ABS can answer well without any algorithmic knowledge. The above is an example of the answer, so if you want to code smarter, please check other model answers.
Recommended Posts