3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

paizaコラボ企画ということで。順番はキャンペーン対象問題の順で。

時間もないので適当に正解させていきましょう。

Pythonを始めた人やDランク水準の人はこちらの記事を読むことをお勧めします。

ほかのRANKは下の記事を。

宝くじ

宝くじ.py
# coding: utf-8
c = int(input())
n = int(input())
q = [int(input()) for _ in range(n)]
for i in q:
    if i == c:
        print("first")
    elif (i + 1 == c and i + 1 <= 199999) or (i - 1 == c and 100000 <= i - 1):
        print("adjacent")
    elif str(i)[2:] == str(c)[2:]:
        print("second")
    elif str(i)[3:] == str(c)[3:]:
        print("third")
    else:
        print("blank")

ちなみにpaizaの解法はint型で判別をしているもよう。

野球の審判

野球の審判
# coding: utf-8
def main():
    q = w = 0
    for _ in range(int(input())):
        if (a := input()) == "strike":
            q += 1
            if q == 3:
                print("out!")
                break
            print("strike!")
        elif a == "ball":
            w += 1
            if w == 4:
                print("fourball!")
                break
            print("ball!")
main()

解説が面倒なので適当に。

        if (a := input()) == "strike":
            q += 1
            if q == 3:
                print("out!")
                break
            print("strike!")
        elif a == "ball":
            w += 1
            if w == 4:
                print("fourball!")
                break
            print("ball!")

この二つのコードはコピペして、strikeballqwを変更したという感じ。
変数が決めた値になった場合はifにあるprint()を表示してbreakで繰り返しから抜ける。そうでなかったら下のprint()を表示する。
ちなみに(a := input())はPythonのセイウチ演算子と呼ばれるものです。
これを使ったらif文の条件式で変数を代入できるという演算子だそうです。
詳しくはこちらを。

みかんの仕分け

みかんの仕分け
# coding: utf-8
def main():
    n,m = map(int,input().split())
    w = [int(input()) for _ in range(m)]
    for i in w:
        if i < n:
            print(n)
        else:
            if n % 2:
                print(n * (i // n if i % n <= n // 2 else i // n + 1))
            else:
                print(n * (i // n if i % n < n // 2 else i // n + 1))
main()

小さくできそうですね―――小さくしたらこうなった。

# coding: utf-8
n,m = map(int,input().split())
for _ in range(m):
    if (i := int(input())) <= n:
        print(n)
    else:
        print(n * (i // n + (0 if i % n < n // 2 + n % 2 else 1)))

ずいぶんとPythonらしいコードになった。

    if (i := int(input())) <= n:
        print(n)

さきほどのセイウチ演算子を使って変数に代入を行っている。ちなみに<=ではなく<を使っても動くが、明確に分けていることを示したいなら<=がいいだろう。
ここでは入力された値が定数Nより小さければそのままNを出力するようにしている。

    else:
        print(n * (i // n + (0 if i % n < n // 2 + n % 2 else 1)))

次にn * (i // n + (0 if i % n < n // 2 + n % 2 else 1))のコードを説明しよう。
0 if i % n < n // 2 + n % 2 else 1は「入力された値がある定数Nで割った余り」が左の式、「ある定数Nの半分とNが奇数であれば1を加える」のが右の式である。左の答えが右委の答えより小さければ0にし、大きければ1にする。
i // n + (~~~)の式はi // nで倍数を決め、さきほどの式で出力された数値を足し合わせる。さきほどの式がないと、半分以上の場合がうまく出力されない。
n * (~~~)の式でさきほどの式をかけると仕分けができる。
説明が適当だな、多分もうちょっと小さくできるはず・・・。

Fizz Buzz

FizzBuzz問題自体はDランクレベルアップメニューにある。
その内容を入力した値分回すように変更する。

Fizz Buzz
# coding: utf-8
n = int(input())
for i in range(1,n+1):
    if i % 15 == 0:
        print("Fizz Buzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

残り物の量

残り物の量
# coding: utf-8
m,p,q = map(int,input().split())
print(m * (1 - p/100)*(1 - q/100))

画像にある計算式を入力する。以上。

さいごに

RANK Cの問題を解きました。
Minecraftのコマンドで遊んでたらいつの間にかこんな日にちが立っていました。残り何日でしょうか。
・・・RANK Sの記事を出したほうがいいでしょうかねぇ。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?