結果
問題 | No.2785 四乗足す四の末尾の0 |
ユーザー |
|
提出日時 | 2024-06-14 22:02:25 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 4,310 bytes |
コンパイル時間 | 3,697 ms |
コンパイル使用メモリ | 256,944 KB |
実行使用メモリ | 13,756 KB |
最終ジャッジ日時 | 2024-06-14 22:02:32 |
合計ジャッジ時間 | 7,021 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 TLE * 1 -- * 9 |
ソースコード
#line 1 "cp_templates/template/template.hpp"# include <bits/stdc++.h>using namespace std;using ll = long long;using ull = unsigned long long;const double pi = acos(-1);template<class T>constexpr T inf() { return ::std::numeric_limits<T>::max(); }template<class T>constexpr T hinf() { return inf<T>() / 2; }template <typename T_char>T_char TL(T_char cX) { return tolower(cX); }template <typename T_char>T_char TU(T_char cX) { return toupper(cX); }template<class T> bool chmin(T& a,T b) { if(a > b){a = b; return true;} return false; }template<class T> bool chmax(T& a,T b) { if(a < b){a = b; return true;} return false; }int popcnt(unsigned long long n) { int cnt = 0; for (int i = 0; i < 64; i++)if ((n >> i) & 1)cnt++; return cnt; }int d_sum(ll n) { int ret = 0; while (n > 0) { ret += n % 10; n /= 10; }return ret; }int d_cnt(ll n) { int ret = 0; while (n > 0) { ret++; n /= 10; }return ret; }ll gcd(ll a, ll b) { if (b == 0)return a; return gcd(b, a%b); };ll lcm(ll a, ll b) { ll g = gcd(a, b); return a / g*b; };ll MOD(ll x, ll m){return (x%m+m)%m; }ll FLOOR(ll x, ll m) {ll r = (x%m+m)%m; return (x-r)/m; }template<class T> using dijk = priority_queue<T, vector<T>, greater<T>>;# define all(qpqpq) (qpqpq).begin(),(qpqpq).end()# define UNIQUE(wpwpw) (wpwpw).erase(unique(all((wpwpw))),(wpwpw).end())# define LOWER(epepe) transform(all((epepe)),(epepe).begin(),TL<char>)# define UPPER(rprpr) transform(all((rprpr)),(rprpr).begin(),TU<char>)# define rep(i,upupu) for(ll i = 0, i##_len = (upupu);(i) < (i##_len);(i)++)# define reps(i,opopo) for(ll i = 1, i##_len = (opopo);(i) <= (i##_len);(i)++)# define len(x) ((ll)(x).size())# define bit(n) (1LL << (n))# define pb push_back# define exists(c, e) ((c).find(e) != (c).end())struct INIT{INIT(){std::ios::sync_with_stdio(false);std::cin.tie(0);cout << fixed << setprecision(20);}}INIT;namespace mmrz {void solve();}int main(){mmrz::solve();}#line 2 "2785.cpp"// #include "./cp_templates/template/debug.hpp"// #define debug(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__)// #define debug(...) (static_cast<void>(0))using namespace mmrz;__int128_t power(__int128_t n, __int128_t k, __int128_t m) {n %= m;__int128_t ret = 1;while(k > 0){if(k & 1)ret = ret * n % m;n = __int128_t(n) * n % m;k >>= 1;}return ret % m;}bool is_prime(int64_t n){if(n <= 1)return false;if(n == 2 || n == 3 || n == 5)return true;if(n % 2 == 0)return false;if(n % 3 == 0)return false;if(n % 5 == 0)return false;vector<int64_t> A = {2, 325, 9375, 28178, 450775, 9780504, 1795265022};int64_t s = 0, d = n - 1;while(d % 2 == 0){s++;d >>= 1;}for (auto a : A){if(a % n == 0)return true;int64_t t, x = power(a, d, n);if(x != 1){for(t = 0;t < s;t++){if(x == n - 1)break;x = __int128_t(x) * x % n;}if(t == s)return false;}}return true;}int64_t rho(int64_t n){if(n % 2 == 0)return 2;if(is_prime(n))return n;auto f = [&](int64_t x) -> int64_t {return (__int128_t(x) * x + 13) % n;};int64_t step = 0;while (true) {++step;int64_t x = step, y = f(x);while (true) {int64_t p = gcd(y - x + n, n);if (p == 0 || p == n) break;if (p != 1) return p;x = f(x);y = f(f(y));}}}vector<int64_t> factorize(int64_t x){if(x == 1)return {};int64_t p = rho(x);if(p == x) return {p};vector<int64_t> l = factorize(p);vector<int64_t> r = factorize(x / p);l.insert(l.end(), r.begin(), r.end());sort(l.begin(), l.end());return l;}void SOLVE(){ll n;cin >> n;n = abs(n);bool FACTO = (n <= 1000000);n = n*n*n*n + 4;if(FACTO){auto ret = factorize(n);cout << (len(ret) > 1 ? "No" : "Yes") << endl;}else {cout << (n == 5 ? "Yes" : "No") << endl;}int cnt = 0;while(n % 10 == 0){cnt++;n /= 10;}cout << cnt << endl;}void mmrz::solve(){int t = 1;cin >> t;while(t--)SOLVE();}