该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
没有接触过大整数乘法的问题,不过我倒是遇到了大整数加法的题,程序是c++不过无妨,只是格式上出现了点不一样~~
#include
#include
using namespace std;
//str1、str2接受两个大整数输入并将它们转化至整形数组a1、a2中
char str1[201],str2[201];
int a1[200]={0},a2[201]={0};
int main()
{
//i为循环变量
int i;
//输入
cin>>str1>>str2;
//len1、len2记录两个数组的长度
int len1=strlen(str1);
int len2=strlen(str2);
//将str1、str2中的字符转化为数字,存入a1.a2中,每个元素只保存大整数的一位数字其中a1[0]为低位、a1[len1-1]为高位
for(i=0;i
a1[i]=str1[len1-1-i]-'0';
for(i=0;i
a2[i]=str2[len2-1-i]-'0';
//从低位到高位做加法,并直接保存至a2
//大整数最大200为,所以至多加200次----这样比较容易些程序,但并不环保
for(i=0;i<200;i++){
a2[i]+=a1[i];
if(a2[i]>=10){ //判断是否进位,两个数字做加法,进位最多只能为1
a2[i]-=10;
a2[i+1]++; //进位加到a2
}
//不进位就不用处理啥
}
//做完加法,最多201位,我们先找最高位非0的数
for(i=200;i>=0;i--)
if(a2[i]!=0)
break;
//既然找到了最高位非0的数,则向最低位输出
if(i==-1) //如果结果为0.也就是所有的a2[i]都为0.此时i=-1.直接输出0
cout<<0;
else
for(;i>=0;i--)
cout<
cout<
return 0;
}