news 2026/5/6 7:40:06

高精度乘法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
高精度乘法

思想:

由于数超出了long long范围,所以输入两个字符串代表数据,之后创建三个数组,分别代表两个乘数数组还有一个代表结果数组,先把两个字符串的数据逆序存储到两数组中,之后遍历两数组,求每个数组元素的乘积,第一个数组i元素值和第二个数组j元素的值乘积之和结果会落在结果数组的i+j-1的位置上,当两数组全部遍历完之和,乘积结束,最后输出结果,具体代码以及细节如下

#include<bits/stdc++.h> using namespace std; int main() { string s1, s2; cin >> s1 >> s2; int lmax = s1.size() + s2.size(); //最后一位的进位到lmax位置上 vector<int> vec1(lmax+1); //多开一个避免最后输出vec3越界 vector<int> vec2(lmax+1); vector<int> vec3(lmax+1); for (int i = 0; i < s1.size();i++) { vec1[s1.size() - i] = s1[i]-'0'; } for (int i = 0; i < s2.size(); i++) { vec2[s2.size() - i] = s2[i]-'0'; } for (int i = 1; i <= s1.size();i++) { for (int j = 1; j <= s2.size();j++) { vec3[i + j - 1] += vec1[i]*vec2[j]; //第一个数的i位和第二个数的j位相乘之和会落在结果数组的i+j-1的位置上 vec3[i + j]+= vec3[i + j - 1] / 10; //进位(一直进位,直到不再出现该位) vec3[i + j - 1] = vec3[i + j - 1]%10; } } for (int i = lmax; i >= 1;i--) { if (i==lmax&&vec3[i]==0) { continue; } cout << vec3[i]; } cout << endl; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:36:38

复杂推理任务协调中元控制器的决策优化研究

复杂推理任务协调中元控制器的决策优化研究 关键词:复杂推理任务、元控制器、决策优化、推理协调、智能决策 摘要:本文聚焦于复杂推理任务协调过程中元控制器的决策优化问题。首先介绍了研究的背景、目的、预期读者等内容。详细阐述了元控制器的核心概念、相关联系及架构,给…

作者头像 李华
网站建设 2026/5/1 4:53:39

自然语言处理在AI原生应用中的7个关键技术解析

自然语言处理在AI原生应用中的7个关键技术解析 关键词&#xff1a;自然语言处理&#xff08;NLP&#xff09;、AI原生应用、预训练模型、多模态融合、上下文学习、意图识别、低资源学习 摘要&#xff1a;AI原生应用&#xff08;AI-Native Apps&#xff09;是指从底层架构到核心…

作者头像 李华
网站建设 2026/5/3 10:36:10

Java全栈开发工程师面试实战:从基础到高阶的全面考察

Java全栈开发工程师面试实战&#xff1a;从基础到高阶的全面考察 一、开场与基本信息 面试官&#xff1a;你好&#xff0c;欢迎来到我们公司的面试环节。我是今天的面试官&#xff0c;主要负责技术部分的考察。你叫什么名字&#xff1f; 应聘者&#xff1a;您好&#xff0c;我叫…

作者头像 李华