大整数乘法——简单
写这个程序的时候有三个关键点,
知道了这个,你Win, Or, 你Lose!
我将它们一一注释在了代码中。

#include "iostream"
#include "cstring"
#include "string"
using namespace std;
#define maxlen 200
int a[maxlen];
int b[maxlen];
int c[2*maxlen+1]; //这个地方也是个关键,一定要多加一个正数,不然错
string s1;
string s2;
int main()
{
while(cin>>s1>>s2)
{
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
int lena, lenb;
lena = s1.length();
lenb = s2.length();
for(int i=lena-1, j=0; i>=0; i--) a[j++] = s1[i]-'0';
for(int i=lenb-1, j=0; i>=0; i--) b[j++] = s2[i]-'0';
for(int i=0; i<lena; i++)
for(int j=0; j<lenb; j++)
c[i+j] += a[i]*b[j]; //这里是+=,这个是相当关键的,因为要多次相乘嘛
for(int i=0; i<maxlen*2; i++) //上限就是lena+lenb了,而不是lena*lenb
{
if(c[i]>=10)
{
c[i+1] += c[i]/10;
c[i] %= 10;
}
}
bool flag = false;
for(int i=maxlen*2; i>=0; i--) //上限就是lena+lenb了,而不是lena*lenb
{
if(flag) cout<<c[i];
else if(c[i])
{
cout<<c[i];
flag = true;
}
}
if(!flag) cout<<"0"<<endl;
cout<<endl;
}
return 0;
}
posted on 2011-10-12 11:24 More study needed. 阅读(312) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架