hiro1729 競プロ

競プロの解説などを書きます。

ABC327-B 解説

B - A^A

$A^{A} = B \le 10^{18} < 16^{16}$ なので、$A$ として $15$ 以下を全て調べればいいです。

Pythonでは $0^{0}=1$ なので、そのケースを含まないように注意しましょう。

Python

b = int(input())
for a in range(1, 19):
  if a ** a == b:
    exit(print(i))
print(-1)

C++

#include <iostream>
using namespace std;

int main() {
  long long B;
  cin >> B;
  int A = -1;
  for (int i = 1; i <= 15; i++) {
    long long A_A = 1;
    for (int j = 0; j < i; j++) {
      A_A *= i;
    }
    if (A_A == B) {
      A = i;
    }
  }
  cout << A;
}