ABC 121

Atcoder

プログラムチョットカケルを言いたいが為に時間あるときにやり始めてる
んだけど、まず問題文読むのが本当に厳しい
NとかSとか一杯記号書いてあると拒否反応がすごい
時間内に問題読める人は偉いから良い暮らしして欲しい

A - White Cells

A - White Cells

これは脳死問題なので簡単だったと思う

h,w = map(int,input().split())
a,b = map(int,input().split())
print((h-a)*(w-b))

B - Can you solve this?

B - Can you solve this?

この時点で正直問題文の意味理解する前にやめようと思った
よく読んだら分かったけどセンター国語が壊滅レベルで日本語読解苦手なの思い出した
丁寧に計算方法まで書いてくれてるので、そのまま書いたら通った。
変数名kotaeとansって見返すとなかなかファンキーだと思う。
見る人が見たら瞬間でリーダブルコードの角で殴られるかするんだと思う

n,m,k = map(int,input().split())
     
b = input().split()
kotae = 0
for i in range(n):
    c = input().split()
    ans = 0
    for j in range(m):
        ans += int(b[j]) * int(c[j])
    if ans+k > 0:
        kotae += 1
print(kotae)

C - Energy Drink Collector

C - Energy Drink Collector

ABCのC問題にしてはたぶん簡単目の奴
値段が安い順に並べ替えてからMを引いていく実装で計算時間が間に合うはず
って祈りながら書くと良いみたい。
といいつつコンテスト中は間に合わない答え書いててそれに気づかなかったんだけど

n,m = map(int,input().split())
plist = []
for _ in range(n):
    plist.append([int(x) for x in input().split()])
     
plist.sort()
     
cost=0
i = 0
     
while i < len(plist):
    tmp = plist[i]
    if tmp[1] < m:
        m -= tmp[1]
        cost += tmp[0] * tmp[1]
        i += 1
        continue
    else:
        cost += tmp[0] * m
        break
print(cost)

D - XOR World

D - XOR World

わからなかったので、問題文見て寝た
解説見て更にわからなくなったけど
0からBのXORの和と0からA-1のXORの和を求めてからXOR取ってくれやって事みたい
まぁそれでも実装方法が分からなかったので紙に書きだしたら

XORの和の並び
X XORの和
1 1
2 3
3 0
4 4
5 1
6 7
7 0

こんな感じなので
4の剰余使えばパターンが見えるというのに気づいてやっと腑に落ちた
コードはハチャメチャにシンプルになる。

a,b = map(int,input().split())

def XOR_SUM(X):
    ans = 0
    if X % 4 == 0:
        ans = X
    elif X % 4 == 1:
        ans = 1
    elif X % 4 == 2:
        ans = X+1
    elif X % 4 == 3:
        ans = 0
    return ans
    
print(XOR_SUM(a-1)^XOR_SUM(b))

完全に理解した。
と言いたいけど、これで問題の答えが求まるのが不思議過ぎる。