#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void mulpl(string ch1, string ch2) {
int len1 = ch1.size();
int len2 = ch2.size();
char ch3[1000009];
for (int i = 0; i < 1000009; ++i)
ch3[i] = '\0';
for (int i = 0; i < len1; ++i) {
for (int j = 0; j < len2; ++j) {
ch3[i+j] += (ch1[i] - '0') * (ch2[j]-'0');// 直接实现了移位相加
if (ch3[i + j] > 9 && (i + j) > 0) {
ch3[i + j - 1] += ch3[i + j] / 10;
ch3[i + j] %= 10;
}
}
}
for (int i = len1 + len2 - 1; i > 0; --i) {
if (ch3[i] > 9) {
ch3[i - 1] += ch3[i] / 10;
ch3[i] %= 10;
}
}
if (ch3[0] > 9) {
cout << ch3[0] / 10;
ch3[0] %= 10;
}
for (int i = 0; i < len1 + len2 - 1; ++i)
cout << char(ch3[i] + '0');
cout << endl;
}
void add(string ch1, string ch2) {
int len1 = ch1.size();
int len2 = ch2.size();
char ch3[1000009];
for (int i = 0; i < 1000009; ++i)
ch3[i] = '\0';
int lenmax = max(len1,len2);
for (int i = 0; i < lenmax; ++i) {
char c1, c2;
c1 = i > len1 ? '0' : ch1[i];
c2 = i > len2 ? '0' : ch2[i];
ch3[i] = c1-'0' + c2-'0';
}
for (int i = lenmax; i > 0; --i) {
if (ch3[i] > 9) {
ch3[i - 1] += ch3[i] / 10;
ch3[i] %= 10;
}
}
if (ch3[0] > 9) {
cout << ch3[0] / 10;
ch3[0] %= 10;
}
for (int i = 0; i < lenmax; ++i)
cout << char(ch3[i] + '0');
cout << endl;
}
int main()
{
string s1, s2;
cin >> s1 >> s2;
mulpl(s1,s2);
add(s1,s2);
return 0;
}
大数运算操作
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...