Viết hàm int superPow (int a, int b[], int len) để tính hàm mũ theo công thức trên.
Hàm nhận giá trị đầu vào là sô nguyên dương a và số nguyên dương b có độ dài len được biểu diễn dưới dạng dãy các số nguyên.
Hàm trả về kết quả là một số nguyên.
cho em xin hướng giải với ạ
Tính (a^b) % 1337 với a là một số nguyên dương và b là một số nguyên dương cực kỳ lớn được cho dưới dạng mảng số nguyên
Hướng đầu tiên là bỏ chuyện số lớn qua một bên, bạn hãy viết hàm tính (a^b) % 1337
với a
và b
là số nguyên nhỏ trong khoảng (1, 4000000000) rồi share code lên đây thử xem.
int superPow (int a, int b[], int len)
{
int c=0,d;
for(int i=0;i<len;i++)
{
c+=b[i]*pow(10,len-1-i);
}
d=pow(a,c);
return d%1337;
}
Đây ạ, nhưng do input lớn quá nên n k chạy đc ạ
Một là: code kia không phải cho 2 số nguyên nhỏ như đã đề cập
Hai là: nếu cho a % 1337 = 2, b % 1337 = 5
thì bạn có biết được (a*b) % 1337
bằng bao nhiêu không? Nếu a%1337=7, b%1337=5
thì sao?
à không. ý em a^b là a mũ b ấy ạ
bạn focus vào câu hỏi của Shanley
nếu biết trước x % 1337 = 2, y % 1337 = 5
thì (x * y) %1337
sẽ có kết quả là bao nhiêu
(viết lại để tránh trùng tên a, b)
đây là kiến thức toán học
bạn nên xem lại thái độ học của bạn, có vẻ như bạn không cần kiến thức, chỉ cần hoàn thành bài tập, và ở đây thì không hỗ trợ hoàn thành bài tập
k ạ. tại e k hiểu ý lắm thôi. T.T
Bạn tìm hiểu về định lý Euler (tổng quát hoá của định lý Fermat bé) nhé.
vâng, em hiểu rồi, em cảm ơn ạ
trc tại em k biết định lí này nên em k có hướng làm ạ