From 90375859767eb4cae3a7a93c64725b504d7f0fe0 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 24 Feb 2021 00:36:15 +0800 Subject: import(life): Add chuanzhi-cup codes. --- works/life/chuanzhi-cup/practice-contest/3.cpp | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 works/life/chuanzhi-cup/practice-contest/3.cpp (limited to 'works/life/chuanzhi-cup/practice-contest/3.cpp') diff --git a/works/life/chuanzhi-cup/practice-contest/3.cpp b/works/life/chuanzhi-cup/practice-contest/3.cpp new file mode 100644 index 0000000..1f79723 --- /dev/null +++ b/works/life/chuanzhi-cup/practice-contest/3.cpp @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include + +int main() { + std::string input; + std::getline(std::cin, input); + + std::regex reg(R"aaa((\d+)([GMK]?B)=\?([GMK]?B))aaa"); + std::smatch match; + std::regex_match(input, match, reg); + + std::string original_number_str = match[1].str(); + std::string original_unit = match[2].str(); + std::string target_unit = match[3].str(); + + double original_number = std::stod(original_number_str); + + auto to_ratio = [](const std::string s) -> double { + if (s.size() == 1) + return 1; + if (s[0] == 'G') + return std::pow(2, 30); + if (s[0] == 'M') + return std::pow(2, 20); + return std::pow(2, 10); + }; + + double original_ratio = to_ratio(original_unit); + double target_ratio = to_ratio(target_unit); + + std::cout << std::fixed << std::setprecision(6) + << (original_number * original_ratio / target_ratio); + + return 0; +} -- cgit v1.2.3