結果
問題 | No.1737 One to N |
ユーザー | naskya |
提出日時 | 2021-11-12 21:54:37 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 7,594 bytes |
コンパイル時間 | 1,483 ms |
コンパイル使用メモリ | 156,428 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-05-04 08:26:03 |
合計ジャッジ時間 | 2,267 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,376 KB |
testcase_02 | AC | 1 ms
5,376 KB |
testcase_03 | AC | 2 ms
5,376 KB |
testcase_04 | AC | 1 ms
5,376 KB |
testcase_05 | AC | 1 ms
5,376 KB |
testcase_06 | AC | 1 ms
5,376 KB |
testcase_07 | AC | 1 ms
5,376 KB |
testcase_08 | AC | 1 ms
5,376 KB |
testcase_09 | AC | 1 ms
5,376 KB |
testcase_10 | AC | 1 ms
5,376 KB |
testcase_11 | AC | 1 ms
5,376 KB |
testcase_12 | AC | 1 ms
5,376 KB |
testcase_13 | AC | 2 ms
5,376 KB |
testcase_14 | AC | 2 ms
5,376 KB |
testcase_15 | AC | 2 ms
5,376 KB |
testcase_16 | AC | 1 ms
5,376 KB |
testcase_17 | AC | 1 ms
5,376 KB |
testcase_18 | AC | 2 ms
5,376 KB |
testcase_19 | AC | 2 ms
5,376 KB |
testcase_20 | AC | 1 ms
5,376 KB |
testcase_21 | AC | 2 ms
5,376 KB |
testcase_22 | AC | 2 ms
5,376 KB |
testcase_23 | AC | 2 ms
5,376 KB |
testcase_24 | AC | 2 ms
5,376 KB |
testcase_25 | AC | 1 ms
5,376 KB |
testcase_26 | AC | 2 ms
5,376 KB |
testcase_27 | AC | 2 ms
5,376 KB |
testcase_28 | AC | 2 ms
5,376 KB |
testcase_29 | AC | 1 ms
5,376 KB |
コンパイルメッセージ
main.cpp:176:2: warning: #warning USE_EXTERNAL_CONTAINERS is not defined. [-Wcpp] 176 | #warning USE_EXTERNAL_CONTAINERS is not defined. | ^~~~~~~
ソースコード
#pragma region template // clang-format off #ifdef ONLINE_JUDGE #pragma GCC optimize "fast-math" #endif #ifdef LOCAL_NDEBUG #include <headers.hpp> #endif // #define USE_EXTERNAL_CONTAINERS // #define NO_PRINT_INF #ifdef USE_EXTERNAL_CONTAINERS #define PROPER #include <boost/container/flat_map.hpp> #include <boost/container/flat_set.hpp> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> template <class T> using tree = __gnu_pbds::tree<T, __gnu_pbds::null_type, std::less<T>, __gnu_pbds::rb_tree_tag, __gnu_pbds::tree_order_statistics_node_update>; template <class S, class T> using hash_table = __gnu_pbds::gp_hash_table<S, T>; #endif #ifdef LOCAL_DEBUG #if (defined USE_EXTERNAL_CONTAINERS) || (defined NO_PRINT_INF) #include <../src/debugger.hpp> #else #include <debugger.hpp> #endif #endif // #define PROPER #define _USE_MATH_DEFINES #if (defined __INTELLISENSE__) && (!defined PROPER) #define NDEBUG namespace std { #endif #include <cassert> #include <cctype> #include <cmath> #include <cstddef> #include <cstdint> #include <cstdlib> #include <algorithm> #include <array> #include <bitset> #include <charconv> #include <complex> #include <deque> #include <functional> #include <iostream> #include <iomanip> #include <iterator> #include <limits> #include <list> #include <map> #include <numeric> #include <queue> #include <regex> #include <set> #include <sstream> #include <stack> #include <string> #include <string_view> #include <tuple> #include <typeinfo> #include <type_traits> #include <utility> #include <vector> #if (defined __INTELLISENSE__) && (!defined PROPER) using namespace std; } #endif using namespace std::literals; #ifdef LOCAL_DEBUG #define CP_LIBRARY_DEBUG_LEVEL 2 #define STR(x) #x #define STRINGIFY(x) STR(x) #define FILE_LINE "[Debug] ./" __FILE__ ":" STRINGIFY(__LINE__) #define see(...) debugger::multi_print(#__VA_ARGS__, __VA_ARGS__) #define see2(arg) arg.debug_print(#arg) #define here(...) debugger::os << FILE_LINE << " in " << __func__ << ": \033[32mReached\033[39m\n" #define com(msg) debugger::os << FILE_LINE << " in " << __func__ << ":\n \033[36mComment:\033[39m " << msg << "\n" #define err(msg) debugger::os << FILE_LINE << " in " << __func__ << ":\n \033[31mError:\033[39m " << msg << "\n" #define local(...) do { __VA_ARGS__ } while (0) #define alter(x, y) x #define pass (com("ToDo: Fill here"), true) #else #define see(...) (static_cast<void>(0)) #define see2(arg) (static_cast<void>(0)) #define here(...) (static_cast<void>(0)) #define com(msg) (static_cast<void>(0)) #define err(msg) (static_cast<void>(0)) #define local(...) (static_cast<void>(0)) #define alter(x, y) y #ifdef __INTELLISENSE__ #define pass (static_cast<void>(0)) #else #define pass static_assert(false) #endif #endif #if (defined LOCAL_DEBUG) && (!defined NOWARN) #define warn(msg) debugger::os << FILE_LINE << " in " << __func__ << ":\n \033[33mWarning:\033[39m " << msg << "\n" #else #define warn(msg) (static_cast<void>(0)) #endif #if (defined LOCAL_DEBUG) || (defined LOCAL_NDEBUG) || (defined __INTELLISENSE__) #define NOEXCEPT #define M_assert(expr) assert(expr) #define O_assert(expr) assert(expr) #else #define NOEXCEPT noexcept #define M_assert(expr) do {if(__builtin_expect(!(expr), 0)) {auto p = static_cast<std::int64_t*>(std::malloc(1 << 30)); for (int i = 0; i < (1 << 27); p[i] = 1, i += (1 << 9)); std::cerr << (*p);}} while (0) #define O_assert(expr) do {if(__builtin_expect(!(expr), 0)) {const auto X = std::string(1000, '-'); for(int i = 0; i < (1 << 18); i++) std::cout << X;}} while (0) #endif #define CP_LIBRARY_WARN(msg) warn(msg) #define CP_LIBRARY_ASSERT(...) O_assert(__VA_ARGS__) #define as(type, val) static_cast<std::decay_t<type>>(val) #define INDIRECT(...) __VA_ARGS__ #define rep(loop_var, loop_end) \ for ( \ auto loop_var = as(std::make_signed_t<decltype(loop_end)>, 0); \ loop_var < as(decltype(loop_var), loop_end); \ ++loop_var \ ) #define rng(loop_var, loop_start, loop_end, loop_increment) \ for ( \ auto loop_var = as(INDIRECT(std::make_signed_t<std::common_type_t<decltype(loop_start), decltype(loop_end)>>), loop_start); \ ((loop_increment) > 0) ? (loop_var < as(decltype(loop_var), loop_end)) : (loop_var > as(decltype(loop_var), loop_end)); \ loop_var += (loop_increment) \ ) #define erng(loop_var, loop_start, loop_end, loop_increment) \ for ( \ auto loop_var = as(INDIRECT(std::make_signed_t<std::common_type_t<decltype(loop_start), decltype(loop_end)>>), loop_start); \ ((loop_increment) > 0) ? (loop_var <= as(decltype(loop_var), loop_end)) : (loop_var >= as(decltype(loop_var), loop_end)); \ loop_var += (loop_increment) \ ) [[maybe_unused]] constexpr int INF = 1000000005; [[maybe_unused]] constexpr long long LINF = 1000000000000000005LL; [[maybe_unused]] constexpr double EPS = 1e-9; [[maybe_unused]] constexpr long double LEPS = 1e-14L; [[maybe_unused]] constexpr int dy[9] = {1, 0, -1, 0, 1, 1, -1, -1, 0}; [[maybe_unused]] constexpr int dx[9] = {0, 1, 0, -1, -1, 1, 1, -1, 0}; template <class... Ts> [[nodiscard]] constexpr auto Min(const Ts... args) { return std::min({ as(std::common_type_t<Ts...>, args) ... }); } template <class... Ts> [[nodiscard]] constexpr auto Max(const Ts... args) { return std::max({ as(std::common_type_t<Ts...>, args) ... }); } // clang-format on #pragma endregion #pragma region lib_factorize namespace lib { // Function that factorize an integer // usage: factorize(120) // output: map { {2, 3}, {3, 1}, {5, 1} } < this output means 120 = 2^3 * 3^1 * 5^1 // time complexity: O(sqrt n) template <class T> auto factorize(T n) { #ifdef USE_EXTERNAL_CONTAINERS boost::container::flat_map<T, int> #else #warning USE_EXTERNAL_CONTAINERS is not defined. std::map<T, int> #endif res; for (T i = 2; i * i <= n; ++i) { while (n % i == 0) { ++res[i]; n /= i; } } if (n != 1) res[n] = 1; return res; } // Function that returns a vector containing all divisors of the given number // Note: the output vector is not sorted (unless the given is a prime number) // usage: divisors(12) // output: vector { 1, 12, 2, 6, 3, 4 } // time complexity: O(sqrt n) template <class T> std::vector<T> divisors(T n) { std::vector<T> ret; for (T i = 1; i * i <= n; ++i) { if (n % i == 0) { ret.emplace_back(i); if (i * i != n) ret.emplace_back(n / i); } } return ret; } // Function that returns the number of divisors // usage: number_of_divisors(12) // output: 6 // time complexity: O(sqrt n) template <class T> int number_of_divisors(T n) { return static_cast<int>(divisors<T>(n).size()); } // Function that returns a vector containing the // minimum divisor for each numbers upto max // usage: min_divisors(100) // time complexity: O(n log log n) std::vector<int> min_divisors(int max_) { std::vector<int> ret(max_ + 1, 1); const int sq_max = static_cast<int>(std::sqrt(max_)); for (int i = 2; i <= sq_max; ++i) { if (ret[i] == 1) { for (int j = i * i; j <= max_; j += i) ret[j] = i; } } return ret; } } // namespace lib #pragma endregion void solve() { long long N; std::cin >> N; long long res = 0; for (auto &&[k, v] : lib::factorize(N)) { res += k * v; } std::cout << res << "\n"; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout << std::fixed << std::setprecision(25); solve(); }