//超时了,无法通过!
//
#include "stdafx.h"
#include<iostream>
#include<string>
#include<regex>
using namespace std;
using namespace std::regex_constants;
class Harry_Potter_Money
{
public:
Harry_Potter_Money() = default;
Harry_Potter_Money(string m) { str_to_money(m); }
Harry_Potter_Money(long long k) { k_to_money(k); }
long long to_knut();
string money_to_str();
private:
long long galleon = 0;
long long sickle = 0;
long long knut = 0;
bool zf = false;
void str_to_money(string m);
void k_to_money(long long k);
};
void Harry_Potter_Money::str_to_money(string m)
{
string pattern = "([[:alnum:]]+)\\.([[:alnum:]]+)\\.([[:alnum:]]+)";
regex r(pattern);
smatch part_num;
if (regex_search(m, part_num, r))
{
galleon = stoll(part_num.str(1)); //strtoll为c的函数,针对const char*!
sickle = stoll(part_num.str(2));
knut = stoll(part_num.str(3));
}
}
void Harry_Potter_Money::k_to_money(long long k)
{
if (k < 0)
{
k = -k;
zf = true;
}
galleon = k / 493;
long long tmp = k % 493;
sickle = tmp / 29;
knut = tmp % 29;
}
string Harry_Potter_Money::money_to_str()
{
string tmp;
if (true == zf)
{
tmp = tmp + string("-");
}
tmp = tmp+to_string(galleon) + string(".") + to_string(sickle) + string(".") + to_string(knut);
return tmp;
}
long long Harry_Potter_Money::to_knut()
{
long long k = 0;
k = 493 * galleon + 29 * sickle + knut;
return k;
}
int main()
{
string own_money, paid_money;
cin >> paid_money>> own_money;
Harry_Potter_Money ow(own_money);
Harry_Potter_Money pd(paid_money);
long long tmp = ow.to_knut()-pd.to_knut();
Harry_Potter_Money out(tmp);
cout << out.money_to_str();
system("pause");
return 0;
}
1037
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 相关环境 1. 安装nodejs环境,配置npm国内镜像(你懂的) 此过程请自行百度, 推荐npm config ...