文章
10
粉丝
578
获赞
16
访问
110.0k
共两种,第二种好理解
第一种1.借鉴 https://leetcode.com/problems/multiply-strings/discuss/17605/Easiest-JAVA-Solution-with-Graph-Explanation
#include
using namespace std;
int main() {
int n;
string num1, num2;
while(cin >> n >> num1 >> num2) {
int len = n * 2;
//存放计算数据
int ans[len] = {0};
for(int i = n - 1; i >= 0; i--) {
int n1 = num1[i] - '0';
for(int j = n - 1; j >= 0; j--) {
int n2 = num2[j] - '0';
int t = (n2 * n1) + ans[i + j + 1];
ans[i + j + 1] = t % 10;
ans[i + j] += (t / 10);
}
}
//判断是否最高位,如值0123,则0需要去除,变为123
//输出
int i = (ans[0] == 0 ? 1 : 0);
for(; i < len - 1; i++)
printf("%d", ans[i]);
printf("%d\n", ans[len - 1]);
}
}
两数相乘计算规律如下(编号统一从左至右0,1,2,3····)
乘数...
登录后发布评论
不错哟,点个赞