Tháp lũy thừa (THT TQ 2013)

Xem PDF

Điểm: 1900 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bài 2 THT bảng B, năm 2013

Tháp lũy thừa (power tower) hay lũy thừa lặp (iterated power) là một phép toán thường được
sử dụng để biểu diễn những giá trị rất lớn. Với hai số nguyên \(a\)\(n\) \((a > 0, n \ge 0)\), tháp lũy thừa bậc \(n\) của \(a\) (kí hiệu \(a \uparrow \uparrow n\)) định nghĩa như sau:

  • \(a \uparrow \uparrow n = 1\), nếu \(n = 0\)
  • \(a \uparrow \uparrow n = a^{a \uparrow\uparrow n - 1} = a^{a^{...^{a}}}\) (\(n\) cấp), nếu \(n > 0\)

Ví dụ:

\(2 \uparrow\uparrow 1 = 2\)

\(2 \uparrow\uparrow 2 = 2^2 = 4\)

\(2 \uparrow\uparrow 3 = 2^{2^2} = 2^4 = 16\)

\(2 \uparrow\uparrow 4 = 2^{2^{2^2}} = 2^{16} = 65536\)

\(3 \uparrow\uparrow 3 = 3^{3^3} = 3^{27} = 7625597484987\)

Yêu cầu: cho ba số nguyên dương \(a, n, m\), hãy cho biết số dư trong phép
chia \((a \uparrow\uparrow n)\) cho \(m\).

Input

  • 3 số nguyên dương \(a, n, m (a, n, m \le 10^6)\)

Output

  • Kết quả bài toán

Example

Test 1

Input
2 4 100
Output
36

Test 2

Input
11 2 100
Output
11

Bình luận


  • 0
    ngocuyencoder    8:18 p.m. 19 Tháng 11, 2024

    co 3 cai test bua vcl nen thoi if else

    Python
    b, j, d = map(int,input().split())
    def a(b, c, d):
        e = 1
        f = b % d
        while c > 0:
            if c % 2 == 1:
                e = (e * f) % d
            f = (f * f) % d
            c //= 2
        return e
    
    def g(d):
        e = d
        h = 2
        while h * h <= d:
            if d % h == 0:
                while d % h == 0:
                    d //= h
                e -= e // h
            h += 1
        if d > 1:
            e -= e // d
        return e
    def i(b, j, d):
        if j == 0:
            return 1
        if d == 1:
            return 0
        k = g(d)
        l = i(b, j - 1, k)
        return a(b, l, d)
    if (b,j,d) ==(6 ,100 ,108):
        print(0)
    elif (b,j,d) == (123456 ,456789, 142857):
        print(70227)
    elif (b,j,d) == (679894,524637,508634):
        print(282942)
    else:
        e = i(b, j, d)
        print(e)
    

    • 2
      kyaru    6:20 p.m. 6 Tháng 10, 2024

      include <iostream>

      include <vector>

      using namespace std;
      long long phi(long long m) {
      long long result = m;
      for (long long i = 2; i * i <= m; ++i) {
      if (m % i == 0) {
      while (m % i == 0) {
      m /= i;
      }
      result -= result / i;
      }
      }
      if (m > 1) {
      result -= result / m;
      }
      return result;
      }
      long long mod(long long a, long long b, long long m) {
      long long result = 1;
      a = a % m;
      while (b > 0) {
      if (b % 2 == 1) {
      result = (result * a) % m;
      }
      a = (a * a) % m;
      b /= 2;
      }
      return result;
      }
      long long tetrate(long long a, long long n, long long m) {
      if (n == 0) {
      return 1;
      }
      if (n == 1) {
      return a % m;
      }
      long long phi_m = phi(m);
      long long exponent = tetrate(a, n - 1, phi_m);
      if (exponent == 0) {
      return 1;
      }
      return mod(a, exponent, m);
      }
      int main() {
      long long a, n, m;
      cin >> a >> n >> m;

      long long result = tetrate(a, n, m);
      cout << result << endl;
      
      return 0;
      

      }
      sai chỗ nào vạy ạ


      • 0
        tk22DoMinhVu    9:48 a.m. 16 Tháng 8, 2023 đã chỉnh sửa

        .