POWER2 - Tính lũy thừa 2

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Cho hai số nguyên dương ~a~ và ~n~. Tính ~a^n~.

Input

  • Gồm một dòng duy nhất ghi hai số nguyên dương ~a~ và ~n~ cách nhau bởi dấu cách.

Giới hạn:

  • ~1 ≤ a ≤ 10^9; 1 ≤ n ≤ 1000~.

Output

  • Kết quả của phép tính ~a^n~.

Sample

Input #1
5 7
Output #1
78125

Problem source: Chuyên Sơn La Online Judge


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    hkien88  đã bình luận lúc 16, Tháng 4, 2025, 15:05

    include <bits/stdc++.h>

    using namespace std;

    typedef string BigNum;

    BigNum multiply(BigNum a, BigNum b) { int n = a.size(), m = b.size(); vector<int> res(n + m, 0); reverse(a.begin(), a.end()); reverse(b.begin(), b.end());

    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            res[i + j] += (a[i] - '0') * (b[j] - '0');
    
    for (int i = 0; i < n + m - 1; i++) {
        res[i + 1] += res[i] / 10;
        res[i] %= 10;
    }
    
    while (res.size() > 1 && res.back() == 0)
        res.pop_back();
    
    string ans;
    for (int i = res.size() - 1; i >= 0; i--)
        ans += res[i] + '0';
    
    return ans;
    

    }

    bool isZero(const BigNum &s) { return s == "0"; }

    bool isOdd(const BigNum &s) { return (s.back() - '0') % 2 == 1; }

    BigNum divideBy2(BigNum s) { string res; int carry = 0; for (char c : s) { int cur = carry * 10 + (c - '0'); res += (cur / 2) + '0'; carry = cur % 2; } while (res.size() > 1 && res[0] == '0') res.erase(0, 1); return res; }

    BigNum power(BigNum a, BigNum n) { BigNum res = "1"; while (!isZero(n)) { if (isOdd(n)) res = multiply(res, a); a = multiply(a, a); n = divideBy2(n); } return res; }

    int main() { string a, n; cin >> a >> n; cout << power(a, n); return 0; } C++


  • -2
    chienhungvuong  đã bình luận lúc 29, Tháng 3, 2025, 8:17 chỉnh sửa

    include<bits/stdc++.h>

    using namespace std; double a,s; int n; int main () { cin>>a>>n; for (int i=1;i<=n;i++) s=pow(a, n); cout<<s; }


  • -2
    chienhungvuong  đã bình luận lúc 29, Tháng 3, 2025, 7:44

    thủ đô pháp là berlin💯


  • -3
    chienhungvuong  đã bình luận lúc 29, Tháng 3, 2025, 7:43

    hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu hitler đẹp trai nhất sever châu âu


  • -2
    longchanhetl  đã bình luận lúc 5, Tháng 12, 2024, 14:10

    chx cso cái vout nàonào


  • -2
    longchanhetl  đã bình luận lúc 5, Tháng 12, 2024, 14:10

    đúng cho xin vout vs


  • -1
    Buon_Nen_Yeu_Em  đã bình luận lúc 3, Tháng 12, 2024, 17:12 chỉnh sửa

    code python ngắn =))


  • 0
    daotrungkiena1k46  đã bình luận lúc 19, Tháng 7, 2024, 2:49

    sao dùng luỹ thừa nhị phân rồi vẫn bị sai v nhỉ


  • -1
    lehongduc  đã bình luận lúc 16, Tháng 4, 2024, 6:57

    C++ kiểu: không bị quá thời gian nhưng sai=)


  • 0
    haidang3004  đã bình luận lúc 30, Tháng 1, 2024, 13:31 chỉnh sửa

    cách của bạn ngắn vậy,tui làm dài quá


  • -3
    nguien_24  đã bình luận lúc 25, Tháng 1, 2024, 13:33

    python thuat toan a**n cua no kha manh r ko can viet ham dau


  • 1
    tienle0103  đã bình luận lúc 27, Tháng 8, 2023, 2:36

    cho mình hỏi testcase 4 là gì vậy ạ toàn bị sai ở đó


    • -2
      nguien_24  đã bình luận lúc 2, Tháng 1, 2024, 11:25

      số quá to ý bạn


  • -4
    dainghiajustiin  đã bình luận lúc 4, Tháng 8, 2023, 16:58

    python kiểu =))))