int s_arr[101000]; int t_arr[101000]; int ans[1010000];//不知为啥如果将数组定义在函数内部,且动态创建的时候,就会出错,运行结果还不知道是啥 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 第一个整数 * @param t string字符串 第二个整数 * @return string字符串 */ string solve(string s, string t) { // write code here if (s == "0" || t == "0") return "0"; int slen = s.size(); int tlen = t.size(); //将两个字符串转化为整形数组 for (int i = 0; i < slen; i++) { s_arr[i] = s[slen - 1 - i] - '0'; } for (int j = 0; j < tlen; j++) { t_arr[j] = t[tlen - 1 - j] - '0'; } int k = slen + tlen; cout << k << endl; //进行模拟两个高精度乘法 for (int i = 0; i < slen; i++) { for (int j = 0; j < tlen; j++) { ans[i + j] += s_arr[i] * t_arr[j]; } } for (int i = 0; i <= k; i++) { cout << ans[i]; } cout << endl; //进行进位处理 for (int i = 0; i <= k ; i++ ) { if (ans[i] >= 10) { ans[i + 1] += ans[i] / 10; ans[i] = ans[i] % 10; } } //对高位的零进行处理 while (ans[k] == 0) { k--; } //逆序输出处理 string ans2 = ""; for (; k >= 0; k--) ans2 = ans2 + char(ans[k] + '0'); return ans2; } };