結果
問題 | No.1224 I hate Sqrt Inequality |
ユーザー | tkr987 |
提出日時 | 2020-09-12 02:18:20 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 116 ms / 2,000 ms |
コード長 | 4,705 bytes |
コンパイル時間 | 8,613 ms |
コンパイル使用メモリ | 413,136 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-26 15:16:46 |
合計ジャッジ時間 | 7,898 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 2 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 2 ms
5,376 KB |
testcase_06 | AC | 3 ms
5,376 KB |
testcase_07 | AC | 2 ms
5,376 KB |
testcase_08 | AC | 2 ms
5,376 KB |
testcase_09 | AC | 2 ms
5,376 KB |
testcase_10 | AC | 49 ms
5,376 KB |
testcase_11 | AC | 116 ms
5,376 KB |
testcase_12 | AC | 2 ms
5,376 KB |
testcase_13 | AC | 2 ms
5,376 KB |
testcase_14 | AC | 2 ms
5,376 KB |
ソースコード
#pragma GCC diagnostic ignored "-Wunused-variable" #include <bits/stdc++.h> //#include <atcoder/all> using namespace std; //using namespace atcoder; #define BOOST #ifdef BOOST #include <boost/multiprecision/cpp_int.hpp> #include <boost/multiprecision/cpp_dec_float.hpp> using namespace boost; using ml = multiprecision::cpp_int; using md = multiprecision::cpp_dec_float_100; #endif /***** type *****/ using ll = long long; using ld = long double; using pll = pair<long long, long long>; template <class T> using vt = vector<T>; template <class T> using vvt = vector<vector<T>>; template <class T> using vvvt = vector<vector<vector<T>>>; /***** define *****/ #define all(c) (c).begin(), (c).end() // begin to end #define coutld cout << fixed << setprecision(10) // cout double #define output(x) do { cout << x << endl; exit(0); } while(0) #define rep(i, b, e) for (ll i = b; i < e; i++) // repeat #define repr(i, b, e) for (ll i = b; e < i; i--) // repeat reverse #define fori(i, ...) if (ll i = -1) for(__VA_ARGS__) if (i++, 1) #define each(i, e, c) fori (i, auto&& e: c) // for each /***** const value *****/ #define llong_max 9223372036854775807 // 9 * 10^18 #define ldbl_max 1.79769e+308 // 1.7 * 10^308 #define pi 3.1415926535897932 // 3.14 ... /***** lambda *****/ auto Ceil = [] // if (a % b != 0) return a / b + 1; (auto x) { return (ll)ceil(x); }; auto Count = [] // long long count value (auto b, auto e, auto x) { return (ll)count(b, e, x); }; auto CtoL = [] // char to number (auto c) { return (ll)c - (ll)'0'; }; auto LtoC = [] // number to char (auto n) { return (char)('0' + n); }; auto Pow = [] // long long pow (auto a, auto b) { return (ll)pow(a, b); }; auto Pow2 = [] // long long pow2 (auto n) { return (1LL << n); }; auto Pow10 = [] // long long pow10 (auto n) { return (ll)pow(10, n); }; auto Size = [] // long long collection size (auto& c) { return (ll)(c).size(); }; auto Sum = [] // long long accumulate (auto b, auto e) { return accumulate(b, e, 0LL); }; /***** operator *****/ template <class T, class S> pair<T, S> operator + (pair<T, S> l, pair<T, S> r) { // pair<T, S> + pair<T, S> return { l.first + r.first, l.second + r.second }; } template <class T, class S> pair<T, S> operator - (pair<T, S> l, pair<T, S> r) { // pair<T, S> - pair<T, S> return { l.first - r.first, l.second - r.second }; } /***** template *****/ template <class T> void MakeVVT (ll ys, ll xs, vvt<T>& v, T fill = T()) { // vector<vector<T>> resize + fill v.resize(ys); rep(y, 0, ys) v[y].resize(xs, fill); } template <class T> void MakeVVVT (ll zs, ll ys, ll xs, vvvt<T>& v, T fill = T()) { // vector<vector<vector<T>>> resize + fill v.resize(zs); rep(z, 0, zs) MakeVVT(ys, xs, v[z], fill); } template <class T> void InputVVT (ll ys, ll xs, vvt<T>& v, T fix = T()) { // input vector<vector<T>> (T != struct) + fix MakeVVT(ys, xs, v, fix); rep(y, 0, ys) rep(x, 0, xs) { cin >> v[y][x]; v[y][x] += fix; } } template <class T> void InputVVVT (ll zs, ll ys, ll xs, vvvt<T>& v, T fix = T()) { // input vector<vector<vector<T>>> (T != struct) + fix v.resize(zs); rep(z, 0, zs) InputVVT(ys, xs, v[z], fix); } /**************************************/ /********** BEGIN OF NYA LIB **********/ /**************************************/ namespace NyaGadget {} namespace NyaGadget { /***** 素因数分解ライブラリ *****/ struct NT_PrimeFactorization { // 結果を格納する変数 std::map<long long, long long> res; /** * @note * 計算量O(√N)でNを素因数分解する。 * ans[p]がmだったとき、素因数分解して得られた積のなかにm個の素数pが含まれていることを表す。 * 例えば n=12 のとき ans[2]=2、ans[3]=1 となるので 12=2×2×3 と分かる。 **/ decltype(res)& Run(long long N) { for (auto i = 2LL; i * i <= N; i++) { while (N % i == 0) res[i]++, N /= i; } if (N != 1) res[N]++; return res; } /** * @note * Nに含まれる因数xの個数を返す。計算量O(log N) * 例えば n=45、x=3 なら 45=3×3×5 で因数3の個数2を返す。 **/ long long Run(long long N, long long x) { long long ans = 0; while (N % x == 0) ans++, N /= x; return ans; } }; } /**************************************/ /*********** END OF NYA LIB ***********/ /**************************************/ using namespace NyaGadget; //using mll = NT_ModLL< 1000000007 >; //using mll = NT_ModLL< 998244353 >; int main(void) { ll a, b; cin >> a >> b; NT_PrimeFactorization pf; auto res = pf.Run(b / gcd(a,b)); each(i, e, res) if (e.first != 2 && e.first != 5) output("Yes"); cout << "No" << endl; return 0; }