AtCoder Beginner Contest 248 B

https://atcoder.jp/contests/abc248/tasks/abc248_b

なんということもない問題ですが、ふつうに書くと

def F(A, B, K):
    for k in count():
        if A >= B:
            return k
        A *= K

Aを更新するところが気持ち悪いですね。
こういうときは、べき乗を排出するgeneratorを書くとよいです。

# a -> 1, a, a^2, ...
def pows(a):
    n = 1
    while True:
        yield n
        n *= a

def F(A, B, K):
    for k, p in enumerate(pows(K)):
        if A * p >= B:
            return k

Fは1行で書けますね。

def F(A, B, K):
    return next(k for k, p in enumerate(pows(K)) if A * p >= B)

全体では、

# coding: utf-8
# Slimes

from itertools import count


#################### library ####################

def read_tuple():
    return tuple(map(int, raw_input().split()))


#################### process ####################

def read_input():
    A, B, K = read_tuple()
    return (A, B, K)

# a -> 1, a, a^2, ...
def pows(a):
    n = 1
    while True:
        yield n
        n *= a

def F(A, B, K):
    return next(k for k, p in enumerate(pows(K)) if A * p >= B)


#################### main ####################

A, B, K = read_input()
print F(A, B, K)