Tìm K chữ số cuối của của MN (0 < K ≤ 9). Ví dụ : K = 2, M = 2, N = 10, ta có 2^10 = 1024, như vậy hai chữ số cuối cùng của 1024 là 24. code c++ các bác giúp em với

2 câu trả lời

#include<bits/stdc++.h>
using namespace std;
int main()
{
 long long m,z=1,n,k;
 cin>>k>>m>>n;
 k=pow(10,k);
 for(int i=1;i<=n;i++)
 {
  z*=m;
  z%=k;
 } 
 cout<<z;
}

// Giới hạn cho code :((: m, n < 2^63

// Thuật sử dụng: Lũy thừa nhị phân :((

#include <iostream>
#include <cmath>
using namespace std;

typedef long long ll;
ll n, m, k;

ll pow(ll a,ll n,ll mod) {
 ll res = 1;
 while (n) {
     if (n & 1) res = (res * a) % mod;
     a = (a * a) % mod;
     n >>= 1;
 }
 return res;
}

int main() {
    cin >> k >> m >> n;
    cout << pow(m, n, ll(pow(10, k)));
}