POWER

Xem PDF

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 640M Input: bàn phím Output: màn hình

Cho hai số nguyên dương \(A\)\(B\). Tìm chữ số tận cùng của \(A^B\).

Input

  • Dòng thứ nhất chứa số nguyên dương \(A\).
  • Dòng thứ hai chứa số nguyên dương \(B\).

Output

  • In ra chữ số tận cùng của \(A^B\).

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): \(A, B \leq 10\);
  • Subtask \(2\) (\(30\%\) số điểm): \(A, B \leq 10^6\);
  • Subtask \(3\) (\(20\%\) số điểm): \(A, B \leq 10^9\);
  • Subtask \(4\) (\(10\%\) số điểm): \(A, B \leq 10^{18}\);
  • Subtask \(5\) (\(10\%\) số điểm): \(A, B \leq 10^{100000}\);

Example

Test 1

Input
2
4 
Output
6

Bình luận

  • lecongtuantu 9:57 p.m. 6 Tháng 3, 2025

    import sys
    input_data=sys.stdin.read().split()
    a=int(input_data[0])
    b=int(input_data[1])
    if max(a,b)<=10:
    tinh=(a**b)%10
    sys.stdout.write(str(tinh))
    else:
    tinh=pow(a,b,10)%10
    sys.stdout.write(str(tinh))

    • TheBloxdPlayer 9:01 p.m. 4 Tháng 1, 2025
      Code AC nha
      a = int(input())
      n=int(input())
      
      res = pow(a, n, 10)
      
      print(str(res).zfill(1))
      
      • p12b401 4:08 p.m. 12 Tháng 10, 2024

        Giúp mình với mình bị WA

        • tkLeHoangLong 7:05 a.m. 13 Tháng 8, 2022

          This comment is hidden due to too much negative feedback. Click here to view it.

          • huyhau6a2 7:33 a.m. 4 Tháng 1, 2022

            chu kỳ tận cùng mũ có khác

            • khoa_diep_vien_007 7:44 p.m. 14 Tháng 12, 2021

              suốt ngày bị TLE

              • longkold00 4:33 p.m. 13 Tháng 10, 2021

                gõ nhầm mỗi xíu mà wa liên tục :>

                • SPyofgame 5:31 a.m. 11 Tháng 6, 2020 đã chỉnh sửa

                  Spoiler Alert


                  Hint 1

                  Tính toán tìm số cuối cùng, các chữ số khác mình không quan tâm mình có thể lấy mod 10 sau mỗi phép tính

                  Hint 2

                  Việc tính x ^ n % m có thể tính trong O(log n)

                  • x = x ^ (n / 2) * x ^ (n / 2) * x ^ (n % 2)

                  Hint 3

                  Để ăn sub cuối, bạn phải có nhận xét toán học

                  • Mình chỉ quan tâm số cuối, nên trong xâu đầu mình lấy kí tự cuối cùng: (x ^ n) % 10 = ((x % 10) ^ n) % 10
                  • Việc tính x ^ n % 10 có chu trình tối đa là 4, ta có thể tiền xử lí mảng này theo toán học

                  Reference AC code | O(1) time | O(1) auxiliary space | Math

                  C++
                  vector<vector<int> > G {
                      {0, 0, 0, 0},
                      {1, 1, 1, 1},
                      {6, 2, 4, 8},
                      {1, 3, 9, 7},
                      {6, 4, 6, 4},
                      {5, 5, 5, 5},
                      {6, 6, 6, 6},
                      {1, 7, 9, 3},
                      {6, 8, 4, 2},
                      {1, 9, 1, 9}
                  };
                  
                  int main()
                  {
                      string s;
                      cin >> s;
                      int x = s.back() - '0'; /// a % 10
                  
                      cin >> s;
                      int y = s.back() - '0'; /// b % 10
                      if (s.size() >= 2) y += 10 * (s[s.size() - 2]); /// b % 100
                  
                      cout << (y == 0 ? 1 : G[x][y % 4]);
                      return 0;
                  }