#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
using namespace std;
#define MAXN 500 + 50
int a[MAXN], b[MAXN];
int c[MAXN];
int cmp[10] =
{
7, 4, 6, 3, 8, 4, 7, 4, 1, 2
};
bool is_big(int temp[])
{
int u = 0;
for (int i = MAXN - 1; i >= 0; i--)
{
if (temp[i] != 0)
{
u = i;
break;
}
}
if (u >= 10)
{
return true;
}
else if (u == 9)
{
bool flag = true;
for (int i = u; i >= 0; i--)
{
if (temp[i] > cmp[i])
{
return true;
}
else if (temp[i] < cmp[i])
{
return false;
}
}
return false;
}
else
{
return false;
}
}
void output(int temp[])
{
int u = 0;
for (int i = MAXN - 1; i >= 0; i--)
{
if (temp[i] != 0)
{
u = i;
break;
}
}
for (int i = u; i >= 0; i--)
{
cout << temp[i];
}
cout << endl;
}
void input()
{
string str1, str2;
char ch;
while (cin >> str1 >> ch >> str2)
{
int len1 = str1.length();
int len2 = str2.length();
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
for (int i = len1 - 1, j = 0; i >= 0; i--, j++)
{
a[j] = str1[i] - '0';
}
for (int i = len2 - 1, j = 0; i >= 0; i--, j++)
{
b[j] = str2[i] - '0';
}
if (ch == '*')
{
for (int i = 0; i < len1; i++)
{
for (int j = 0; j < len2; j++)
{
c[i + j] += a[i] * b[j];
}
}
for (int i = 0; i < len1 + len2; i++)
{
if (c[i] >= 10)
{
int t = c[i] / 10;
c[i] %= 10;
c[i + 1] += t;
}
}
}
else
{
for (int i = 0; i < len1 || i < len2; i++)
{
c[i] = a[i] + b[i];
if (c[i] >= 10)
{
c[i] %= 10;
c[i + 1]++;
}
}
}
int u = 0;
for (int i = MAXN - 1; i >= 0; i--)
{
if (c[i] != 0)
{
u = i;
break;
}
}
cout << str1 << ' ' << ch << ' ' << str2 << endl;
if (is_big(a))
{
cout << "first number too big" << endl;
}
if (is_big(b))
{
cout << "second number too big" << endl;
}
if (is_big(c))
{
cout << "result too big" << endl;
}
}
}
int main()
{
input();
return 0;
}
ACM->uva465
最新推荐文章于 2019-02-16 22:23:44 发布