Tính toán lũy thừa a ^ b

Tính Toán Lũy Thừa

Cho trước hai số nguyên dương a và b. Lũy thừa bậc b của a, kí hiệu là a^b là tích của b số nguyên a liên tiếp.

Yêu cầu: Hãy tính lũy thừa a^b và in ra màn hình?

Mô tả đầu vào

  • Gồm nhiều dòng, mỗi dòng chứa một cặp số nguyên dương a và b.
  • Quá trình nhập dữ liệu sẽ kết thúc khi gặp một cặp số nguyên a = b = 0.

Ràng buộc

  • 0≤a,b≤10.
  • Số lượng test cases không vượt quá 10^51.

Mô tả đầu ra

  • Với mỗi test case, in ra lũy thừa a^b tương ứng trên một dòng.
    Thực hiện yêu cầu này kiểu gì vậy ạ : “Quá trình nhập dữ liệu sẽ kết thúc khi gặp một cặp số nguyên a = b = 0.”

Code của em:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b;
    while (cin >> a >> b)
    {      
        int res = a;
        
        for (int i = 2; i <= b; i++)   
           res *= a;
           cout << res << endl;
    }    
}

Như thế này nè bạn:

for (int a, b; (cin >> a >> b) && !(a == 0 && b == 0); ) {
    // code
} 
2 Likes

Khoan đã, a != 0, b = 0 thì bạn trả về gì vậy?

2 Likes

Em cũng thấy đề cứ cấn cấn chỗ đấy :sweat_smile:

Anh có thể viết mẫu không ạ? Em không hiểu vị trí của cái vòng for này.

Là dùng thay cho while ạ ?

while hay for cũng chỉ là cú pháp thôi. Bạn đừng máy móc vậy.

Bạn đã hiểu vì sao code của bạn dùng while (cin >> a >> b) chưa? Và đã hiểu thực sự cú pháp của for và while chưa?

Đề bài ghi rất rõ ràng rồi.

2 Likes

While thì em hiểu là nhập vào giá trị xong chạy lệnh ra kết quả, đến khi nhập vào giá trị nào đấy thì mới dừng.
Em không biết cách thực hiện yêu cầu của bài ạ.

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b;
     while ( (cin >> a >> b) && !(a == 0 &&  b == 0)) 
    {      
        int res = a;

            for (int i = 2; i <= b; i++)   
           res *= a;
           cout << res << endl;
        
    }    
}
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a, b;
     for ( ; (cin >> a >> b) && !(a == 0 &&  b == 0) ;) 
    {      
        int res = a;

            for (int i = 2; i <= b; i++)   
           res *= a;
           cout << res << endl;
        
    }    
}

Thế này có đúng không ạ

Bạn học lại cú pháp và ý nghĩa của vòng while và for nhé. Bạn có thể code một cách “mềm dẻo”:

for (khởi_tạo; điều_kiện; cập_nhật) {
    ...
}

tương đương với

khởi_tạo;
while (điều_kiện) {
    ...
    cập_nhật;
}

Tuy nhiên, mình đang cảnh báo bạn là trường hợp a != 0, b = 0 thì kết quả là bao nhiêu đấy.

2 Likes

Vâng em hiểu rồi . Anh có thể gửi link " cú pháp và ý nghĩa của vòng while và for" cho em tham khảo với ạ

Bạn search Google “for loop syntax C++” và “while loop syntax C++” là ra mà :neutral_face:

https://en.cppreference.com/w/cpp/language/for

https://en.cppreference.com/w/cpp/language/while

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?