Tính số mũ bằng phép cộng đã có ai thử chưa?

Em đọc trên mạng thấy một đề bài tính x^y bằng phép cộng hoàn toàn (không được sử dụng phép toán nào khác )

Ý là toàn bộ thuật toán chỉ dùng phép cộng :crying_cat_face:

4 Likes

Bạn thử theo cách ở đây:

int multiply(int x, int y)
{
    int product = 0;

    for (int i = 0; i<y; i++)
       product += x;

    return product;
}

int power(int x, int exponent)
{
    int result = 1;

    for (int i = 0; i < exponent; i++)
        result = multiply(result, x);

    return result;
}
2 Likes
int product;

Chưa có giá trị khởi tạo kìa.

int product = 0;
1 Like

để em ngâm cứu :smile: cảm ơn anh :sunny:

cho em hỏi biến y dùng để làm gì vậy anh??

Y chính là cơ số, ví dụ

2^3 thì y=2

em nghĩ y là số mũ chứ anh đạt, nếu y là cơ số thì

product+=y;
``` chứ

product ở đây nó thay đổi.

Ví dụ 5^3 đi. Tức là

5*5*5 = (5+5+5+5+5)*5 = 25*5 = 25+25+25+25+25

trong lần tính đầu, product = 5+5+5+5+5. và lần sau là 25

Giá trị y không đổi, chính là số lần ta phải cộng.

Nhưng x thì thay đổi, sau mỗi lần nhân, nó to ra. Thế nên product sẽ tăng lên theo cấp số nhân

2 Likes

à em hiểu rồi :smile: ngồi tính giấy nãy giờ

1 Like

em đọc xong cái tiêu đề thì nghĩ là chỉ dùng mỗi phép cộng thôi chứ ạ, ko đc dùng phép nhân chứ ạ.

không được dùng phép nào ngoài phép công :smile: không chỉ ở lúc tính số mũ mà cả bài toán em đều phải dùng phép cộng hết :smile: chỉ cần có phép khác xuất hiện là không đạt

1 Like

Ừ, bài này không dùng phép cộng. Đạt chỉ ví dụ là nếu dùng phép nhân thì nó thế nào thôi và cách chuyển từ nhân sang cộng

2 Likes

Bạn coi thử cái này xem, mình viết bằng matlab, cũng khá dễ hiểu :smiley:

x = input('Nhap x');
y=input('Nhap y');
result=x;
a=x;
for n=2:y
    for i=1:(x-1)
        result=result+a;
    end
    a=result;
end
result
3 Likes

sao em code thì chạy ok nhưng giải tay thì không được nhỉ

Anh có thể giải thích hộ em khúc này result=result+a; a=rerult; lúc đầu em tính được result =10, gán a=10; sau đó lặp lại result=result + a =10 +10; ???


À em hiểu rồi :smiley: xem debug mới hiểu :smiley: tks anh

2 Likes

Bài toán khá hay … mình bắt đầu yêu daynhauhoc.com rồi đấy :smiley:

2 Likes

A có thể giai thich bang ngôn ngu tu nhien dk ko…e ms hok mak bài nay lam ko ra

a^b = aaaa (b lần số a)
mà a*b = a+a+…+a+a (b lần số a)
a^b = (a^(b-1))*a = a^(b-1) + a^(b-1) + … + a^(b-1) + a^(b-1)
… cứ thể phân tích ra

A có fb ko ạ…có gì nhờ a giup với…ms học nam đầu

Các bạn lo lắng một ngày nào đó máy tính không thể thực hiện được phép nhân, tính mũ nữa sao :frowning:
Thế thì phải tập cộng phép này thôi :
1.3^2.7 :frowning:

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