Cho em hỏi về thuật toán tính số cực lớn, em đang làm về máy tính, và yêu cầu xử lý số cực lớn. Phần cộng trừ nhân e đã làm xong còn phần lũy thừa, hiện em có viết theo cách bình thường là
nhưng có vẻ k ổn lắm với phép tính 9999^9999,
private string TestPow(string str1, int b)
{
if (b == 0)
{
return 1.ToString();
}
else
{
if (b % 2 == 0)
{
return Multi(TestPow(str1, b / 2), TestPow(str1, b / 2));
//return Multi(str1, TestPow(str1, b - 1));
}
else
{
return Multi(Multi(TestPow(str1, b / 2), TestPow(str1, b / 2)), str1);
//result = TestPow(str1, b/2);
//return Multi(result, result);
}
}
}
vì đây là xử lý số lớn thế cho nên em có viết ra 1 hàm nhân như này, em có đợi nó chạy nhưng mà có vẻ lâu quá nên thôi, hình như chưa tối ưu lắm 
public string Multi(string str1, string str2)
{
string temp1 = str1;
string temp2 = str2;
string result="";
string[] s1 = new string[100000000];
string s10 = "";
for (int i = temp1.Length - 1; i >= 0; i--)
{
s1[i] = MiniMultyply(temp1[i], temp2);
s1[i] += s10;
result = miniPlus(result, s1[i]);
s10 = s10 + 0.ToString();
}
NormalResul(ref result);
return result.ToString();
}
sau đó dùng Toom-3 là xong.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?