您的位置:首页 > 其它

UVA465:Overflow

2013-05-21 12:17 260 查看
WA了三次;仅仅是因为输出输入数据时,先去了了前导0.罪过啊!!

#include<iostream>
#include<string>
#include<sstream>

using namespace std;

string del_pre_zero(const string& a)
{
int i = 0;
for(; a[i] == '0' && i != a.size(); ++i);
if(i == a.size())
return "0";
string t(a.begin()+i, a.end());
return t;
}
bool is_not_small(const string& a, const string& b)
{
if(a.size() != b.size())
return a.size() > b.size();
return a >= b;
}

string reverse(const string& a)
{
string t(a.rbegin(), a.rend());
return t;
}
string operator - (const string& a, const string& b)
{
//cout << "a: " << a << "  " << "b: " << b << endl;
string result = "";
string x(a), y(b);
bool flag = true;
if(!is_not_small(a, b))
{
flag = false;
string t(x);
x = y;
y = t;
}
x = reverse(x);
y = reverse(y);
int i, cur, c;
i = cur = c = 0;
for(; i < y.size(); ++i)
{
cur = x[i] - y[i] + c;
(cur < 0) ? (cur += 10, c = -1) : (c = 0);
result +=(cur + '0');
}
while(i < x.size())
{
cur = x[i] - '0' + c;
(cur < 0) ? (cur += 10, c = -1) : (c = 0);
result += (cur + '0');
++i;
}
if(!flag)
{
string t = "-";
t += result;
result = t;
}
result = reverse(result);
return del_pre_zero(result);
}

string operator -= (string& a, const string& b)
{
return a = a - b;
}
string operator / (const string& a, const string& b)
{
if(!is_not_small(a, b))
return "0";
if(a == b)
return "1";
string x(a), y(b);
int count = 0;
while(is_not_small(x, y))
{
x -= y;
++count;
}
stringstream ss;
ss << count;
string result = "";
ss >> result;
return result;
}
string operator % (const string& a, const string& b)
{
if(!is_not_small(a, b))
return a;
if(a == b)
return "0";
string x(a), y(b);
while(is_not_small(x, y))
{
x -= y;
// cout << "***" << x << "***" << endl;
}
return x;
}

int main()
{
string a, b, c, result;
std::ios::sync_with_stdio(false);
while(cin >> a >> c >> b, b != "0")
{
a = del_pre_zero(a);
b = del_pre_zero(b);
if(c == "%")
result = a % b;
else if(c == "/")
result = a / b;
//cout << a - b << endl;
cout << result << endl;
}
return 0;
}


10494 - If We Were a Child Again
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: