LoginSignup
KKkbt
@KKkbt (Kenta Kubota)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

at-corder問題Aについての質問

本日10/24の問題Aの問題で下のようなコードを書いたのですが何が間違ってるか分からず、時間切れになってしまいました、、
どこが間違っているか教えていただけますか??

N = int(input())

A = 0
B = 0

def find_start_B(B, N):
    B5 = 5 ** B
    while B5 <= N:
        B += 1
        B5 = 5 ** B
    return B-1

def find_ans(A, B, N):
    for b in range(B, -1, -1):
        N_try = 3 ** A + 5 ** b
        while N_try < N:
            A += 1
            N_try = 3 ** A + 5 ** b
        if N_try == N:
            break
    else:
        A = None
    return A, b



B = find_start_B(B, N)

A, B = find_ans(A, B, N)

if A == None:
    print("-1")
else:
    print(A, B)
0

1Answer

かなりアルゴリズムとして変になっているので(難しいフロー・操作になっているため)
もっとシンプルに考えるといいかもしれません。

0

Comments

  1. 2重ループとかだと楽にかけそうです

    ```python

    N = int(input())

    for a in range(1, 60):
    for b in range(1, 60):
    x = 3 ** a + 5 ** b
    if x == N:
    print(a, b)
    exit(0)


    print(-1)

    ```
  2. 細かいですが タイトルがatco'r'derとなっており
    また、問題リンクが あっていないようです。
  3. @KKkbt

    Questioner
    @ganariya
    色々ありがとうございます。
    二重ループで書いてみたらすぐにできました、、
    もう少し簡単に考えるようにしたいと思います!

Your answer might help someone💌