//超时了,无法通过!
//
#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
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 相关环境 1. 安装nodejs环境,配置npm国内镜像(你懂的) 此过程请自行百度, 推荐npm config ...
- 修辞与语境 一、语境是什么?语境:语用活动的环境,简称语用环境或语境,主要包括交际对象、表现对象、时空环境、社会文...