写得复杂还时间超限 大写的尴尬
#include<iostream>
#include<string>
using namespace std;
char mult(char temps,char tempstr,int &tempmult) //实现字符转化成整数相乘
{
int temp;
temp = (temps - '0') * (tempstr - '0') + tempmult;
tempmult = temp / 10;
return temp % 10 + '0';
}
char add(char temps,char tempstr,int &tempadd)
{
int temp;
temp = (temps - '0') + (tempstr - '0') + tempadd; //实现字符转化成整数相加
tempadd = temp / 10;
return temp % 10 + '0';
}
int main()
{
string str,s,multstr;
string s0,addstr;
char c;
int lenstr,lens,tempmult,tempadd,lens0,lenstr1;
while (cin>>str>>s)
{
if(s.length() > str.length()) swap(s, str);
multstr = str;
lenstr = str.length();
lens = s.length();
s0 = "0";
addstr = "";
for (int i = lens - 1; i >= 0; i--) //从s 字符串中逐个取字符 与str 字符串里面的相乘
{
tempmult = 0;
str = multstr;
for (int j = lenstr - 1; j >= 0; j--) //取一位进行乘
{
str[j] = mult(s[i],str[j],tempmult);
}
str += addstr; //到第 i 位与字符串str 乘时 在后面补零的计算
if(s0.length() > str.length())swap(str,s0);
lens0 = s0.length();
lenstr1 = str.length();
lens0--;
lenstr1--;
c = '0';
tempadd = 0;
while (lenstr1 >= 0 ) //两大数相加
{
if(lens0 < 0) str[lenstr1] = add(c,str[lenstr1],tempadd);
else
{
str[lenstr1] = add(s0[lens0],str[lenstr1],tempadd);
lens0--;
}
lenstr1--;
}
s0 = str;
addstr += '0'; //统计要补的零
}
cout<<s0<<endl;
}
return 0;
}