Vapor Trail

明るく楽しく元気よく

ABC246

atcoder.jp

Aすら解けなかった・・・。 B問題だけ解けた。

A問題

XORで解ける。Pythonだと^排他的論理和を取得できる。初めて知った。

def main():
    x1, y1 = list(map(int, input().split()))
    x2, y2 = list(map(int, input().split()))
    x3, y3 = list(map(int, input().split()))

    print(x1 ^ x2 ^ x3, y1 ^ y2 ^ y3)

B問題

2点間の求め方をググって正解できた。

【中3数学】 「2点間の距離」の公式とは? | 映像授業のTry IT (トライイット)

C問題

むずい

D問題

制約に10^18ってあるから全探索だとTLEになることはすぐわかった。範囲決めてN以上の値を徐々に狭めていけばいいんじゃね?とは思ったけど方法がわからない。 二分探索の実装を学んだ。

www.forcia.com

ただ数学苦手すぎてそもそもa,bが10^6に収まるって気づけないと無理っぽい。

参考: qiita.com

ABC245

atcoder.jp

AでいきなりWA出してテンション下がる。
B問題は解けた。

C

C問題はサンプルはAC出せたが提出するとWA出て原因わからず諦めた。

atcoder.jp

未だにわからん。

D

atcoder.jp これもサンプルはAC出せたが提出するとREが出て原因わからず諦め。
numpyの使い方わからん。

これがOKこれが駄目な理由もわからん。

感想

頑張ればDまで解けそうな感はある。

Python tips

切り捨て除算

print(100 / 3)
33.333333333333336
print(100 // 3)
33

リストの要素を空白で連結したい

A = [1, 2, 3, 4, 5]
print(*A)
1 2 3 4 5

 

A = [1, 2, 3, 4, 5]
for i in A:
    print(i, end=" ")
1 2 3 4 5 

※これでもできるが末尾に空白スペースがついてしまう

A = [1, 2, 3, 4, 5]
print(" ".join([str(i) for i in A]))
1 2 3 4 5

※strに変換する必要がある

リストの末尾から取得したい

A = [1, 2, 3, 4, 5]
print(A[-1])
5

階乗

math.factorial(5)
120

順列

list(itertools.permutations([1, 2, 3, 4]))
[(1,_2,_3),_(1,_3,_2),_(2,_1,_3),_(2,_3,_1),_(3,_1,_2),_(3,_2,_1)]

list(itertools.permutations(["a", "b", "c"]))
[('a',_'b',_'c'),_('a',_'c',_'b'),_('b',_'a',_'c'),_('b',_'c',_'a'),_('c',_'a',_'b'),_('c',_'b',_'a')]

アルファベットのリスト

    S = "abc"
    for i in string.ascii_lowercase:
        if i in S:
            print("含まれる")
        else:
            print("含まれない")

平方根

math.sqrt(X).is_integer()