ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

AtCoder-ABC215 A - Your First Judge / B - log2(N)【Python解答例】

f:id:ebisuke33:20210821223409p:plain

AtCoder Beginner Contest215のA とB問題についてPythonの解答例を記事にしていきます。
AtCoder Beginner Contest 215 - AtCoder


AtCoder Beginner Contest215 A - Your First Judge

A - Your First Judge

問題文

文字列 S が与えられるので、この文字列が Hello,World! と完全に一致するなら AC 、そうでないなら WA と出力してください。

制約

・1 ≤ |S| ≤ 15
・S は英大小文字, ,, ! のみからなる

解答例

s = input()

t = "Hello,World!"

if s == t:
    print("AC")
else:
    print("WA")

解説

与えられる文字列SがHello,World! と完全に一致するか答える問題です。

問題文に記載があるように「文字列 A と B が完全に一致するとは、文字列 A と B の長さが等しく、かつ全ての 1≤i≤|A| を満たす整数 i について A の先頭から i 文字目と B の先頭から i 文字目とが(英大文字か小文字かも含めて)一致することを指します。」が完全一致の条件ですが、Pythonでは == だけで比較できます。

したがって解答例のようにs == tならAC、違うならWAを出力すればOKでした。


AtCoder Beginner Contest215 B - log2(N)

B - log2(N)

問題文

正整数 N が与えられるので、 2k ≤ N となる最大の整数 k を求めてください。

制約

・N は 1 ≤ N ≤ 10^18 を満たす整数である

解答例

n = int(input())

if n == 1:
    print(0)
else:
    for k in range(100):
        if pow(2,k) <= n:
            continue
        else:
            print(k-1)
            break

解説

N <=10^18 なので kは最大で60程度の値になります。

したがってi を(大きすぎですが)100までループさせて、2^iとnを比較します。

nより大きくなったときのi-1(n が 1のときは0)を出力すればOKです。



ABC215の関連記事はこちら
ebisuke33.hatenablog.com
ebisuke33.hatenablog.com