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.



  • -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=)


  • 4
    thh  đã bình luận lúc 30, Tháng 1, 2024, 10:52

    Code C++ cho ai cần nè nếu thấy hay cho mik 1 upvote nhaaa, mik dùng nhân số lớn AC 100%

    pragma GCC optimize("O3","unroll-loops")

    pragma GCC target("avx2")

    include<bits/stdc++.h>

    using namespace std;

    define int long long

    typedef vector < int > vi;

    istream &operator >> (istream &cin, vi &a) {

    string s;
    cin >> s;
    
    a.clear();
    for (int i = 0; i < s.size(); ++i)
        a.push_back(s[i] - '0');
    
    return cin;
    

    }

    ostream &operator << (ostream &cout, const vi &a) {

    for (auto d: a) 
        cout << d;
    
    return cout;
    

    }

    void del_zero(vi &a) {

    reverse(a.begin(), a.end()); 
    
    while (a.size() >= 2) 
        if (a.back() == 0) 
            a.pop_back();
        else 
            break;
    
    reverse(a.begin(), a.end());
    

    }

    vi inttovi(int n) {

    vi res;
    if (n == 0)
    {
        res.push_back(n);
        return res;
    }
    
    while (n)
    {
        res.push_back(n % 10);
        n /= 10;
    }
    
    return res;
    

    }

    vi operator * (vi a, vi b) {

    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());
    
    vi c(a.size() + b.size() + 1);
    for (int i = 0; i < (int) a.size(); ++i)
        for (int j = 0; j < (int) b.size(); ++j)
        {
            c[i + j] += (a[i] * b[j]);
            c[i + j + 1] += (c[i + j] / 10);
            c[i + j] %= 10;
        }
    
    c.push_back(0);
    for (int i = 0; i < (int) c.size() - 1; ++i) 
    {
        c[i + 1] += (c[i] / 10);
        c[i] %= 10;
    }
    
    reverse(c.begin(), c.end());
    del_zero(c);
    
    return c;
    

    }

    void solve() {

    vi a, res = {1};
    int b;
    cin >> a >> b;
    for(int i = 1;i <= b; ++i)
        res = res * a;
    
    cout << res;
    

    } main() {

    ios::sync_with_stdio(false);
    cin.tie(nullptr);cout.tie(nullptr);
    
    solve();
    

    }


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

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


  • 1
    hohoanghai5042011  đã bình luận lúc 17, Tháng 1, 2024, 12:43

    def pow(a, n): if n == 1: return a else: temp = pow(a, n//2) if n % 2 == 0: return temp * temp else: return temp * temp * a

    a, n = map(int, input().split()) print(pow(a, n)) code py3 full ac


    • 0
      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 ở đó


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

      số quá to ý bạn


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

    python kiểu =))))