Submission #67153768
Source Code Expand
Copy
#include <bits/stdc++.h>using namespace std;//https://drken1215.hatenablog.com/entry/2023/05/23/233000// montgomery modint (MOD < 2^62, MOD is odd)struct MontgomeryModInt64 {using mint = MontgomeryModInt64;using u64 = uint64_t;using u128 = __uint128_t;// static menberstatic u64 MOD;static u64 INV_MOD; // INV_MOD * MOD ≡ 1 (mod 2^64)static u64 T128; // 2^128 (mod MOD)// inner valueu64 val;// constructorMontgomeryModInt64() : val(0) { }MontgomeryModInt64(long long v) : val(reduce((u128(v) + MOD) * T128)) { }u64 get() const {
#include <bits/stdc++.h> using namespace std; //https://drken1215.hatenablog.com/entry/2023/05/23/233000 // montgomery modint (MOD < 2^62, MOD is odd) struct MontgomeryModInt64 { using mint = MontgomeryModInt64; using u64 = uint64_t; using u128 = __uint128_t; // static menber static u64 MOD; static u64 INV_MOD; // INV_MOD * MOD ≡ 1 (mod 2^64) static u64 T128; // 2^128 (mod MOD) // inner value u64 val; // constructor MontgomeryModInt64() : val(0) { } MontgomeryModInt64(long long v) : val(reduce((u128(v) + MOD) * T128)) { } u64 get() const { u64 res = reduce(val); return res >= MOD ? res - MOD : res; } // mod getter and setter static u64 get_mod() { return MOD; } static void set_mod(u64 mod) { assert(mod < (1LL << 62)); assert((mod & 1)); MOD = mod; T128 = -u128(mod) % mod; INV_MOD = get_inv_mod(); } static u64 get_inv_mod() { u64 res = MOD; for (int i = 0; i < 5; ++i) res *= 2 - MOD * res; return res; } static u64 reduce(const u128 &v) { return (v + u128(u64(v) * u64(-INV_MOD)) * MOD) >> 64; } // arithmetic operators mint operator - () const { return mint() - mint(*this); } mint operator + (const mint &r) const { return mint(*this) += r; } mint operator - (const mint &r) const { return mint(*this) -= r; } mint operator * (const mint &r) const { return mint(*this) *= r; } mint operator / (const mint &r) const { return mint(*this) /= r; } mint& operator += (const mint &r) { if ((val += r.val) >= 2 * MOD) val -= 2 * MOD; return *this; } mint& operator -= (const mint &r) { if ((val += 2 * MOD - r.val) >= 2 * MOD) val -= 2 * MOD; return *this; } mint& operator *= (const mint &r) { val = reduce(u128(val) * r.val); return *this; } mint& operator /= (const mint &r) { *this *= r.inv(); return *this; } mint inv() const { return pow(MOD - 2); } mint pow(u128 n) const { mint res(1), mul(*this); while (n > 0) { if (n & 1) res *= mul; mul *= mul; n >>= 1; } return res; } // other operators bool operator == (const mint &r) const { return (val >= MOD ? val - MOD : val) == (r.val >= MOD ? r.val - MOD : r.val); } bool operator != (const mint &r) const { return (val >= MOD ? val - MOD : val) != (r.val >= MOD ? r.val - MOD : r.val); } friend istream& operator >> (istream &is, mint &x) { long long t; is >> t; x = mint(t); return is; } friend ostream& operator << (ostream &os, const mint &x) { return os << x.get(); } friend mint modpow(const mint &r, long long n) { return r.pow(n); } friend mint modinv(const mint &r) { return r.inv(); } }; typename MontgomeryModInt64::u64 MontgomeryModInt64::MOD, MontgomeryModInt64::INV_MOD, MontgomeryModInt64::T128; // Miller-Rabin bool MillerRabin(long long N, vector<long long> A) { using mint = MontgomeryModInt64; mint::set_mod(N); long long s = 0, d = N - 1; while (d % 2 == 0) { ++s; d >>= 1; } for (auto a : A) { if (N <= a) return true; mint x = mint(a).pow(d); if (x != 1) { long long t; for (t = 0; t < s; ++t) { if (x == N - 1) break; x *= x; } if (t == s) return false; } } return true; } bool is_prime(long long N) { if (N <= 1) return false; else if (N == 2) return true; else if (N % 2 == 0) return false; else if (N < 4759123141LL) return MillerRabin(N, {2, 7, 61}); else return MillerRabin(N, {2, 325, 9375, 28178, 450775, 9780504, 1795265022}); } void YosupoPrimarityTest() { cin.tie(0); ios::sync_with_stdio(false); int N; cin >> N; for (int i = 0; i < N; ++i) { long long A; cin >> A; if (is_prime(A)) cout << "Yes" << endl; else cout << "No" << endl; } } //https://chiwawa-star.hatenablog.com/entry/2016/11/25/015503 struct cww{cww(){ios::sync_with_stdio(false);cin.tie(0);}}star; std::vector<int> Eratosthenes( const int N ) { std::vector<bool> is_prime( N + 1 ); for( int i = 0; i <= N; i++ ) { is_prime[ i ] = true; } std::vector<int> P; for( int i = 2; i <= N; i++ ) { if( is_prime[ i ] ) { for( int j = 2 * i; j <= N; j += i ) { is_prime[ j ] = false; } P.emplace_back( i ); } } return P; } int main() { long long l,r; cin >> l >> r; if(l==r){ cout << 1 << endl; return 0; } vector<int>prime=Eratosthenes((int)1e7); set<int>ans; for(int i=0;i<prime.size();i++){ long long cnt=prime[i]; while(cnt<=r){ if(l<cnt && cnt<=r)ans.insert(cnt); cnt*=prime[i]; } } for(long long i=l+1;i<=r;i++)if(is_prime(i))ans.insert(i); cout << ans.size()+1 << endl; }
Submission Info
Submission Time | |
---|---|
Task | E - LCM Sequence |
User | rotti |
Language | C++ 20 (gcc 12.2) |
Score | 500 |
Code Size | 5427 Byte |
Status | AC |
Exec Time | 1670 ms |
Memory | 36784 KiB |
Compile Error
Main.cpp: In function ‘int main()’: Main.cpp:187:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 187 | for(int i=0;i<prime.size();i++){ | ~^~~~~~~~~~~~~
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 500 / 500 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_1_00.txt, 01_random_1_01.txt, 01_random_1_02.txt, 01_random_1_03.txt, 01_random_1_04.txt, 01_random_1_05.txt, 01_random_1_06.txt, 01_random_1_07.txt, 01_random_1_08.txt, 01_random_1_09.txt, 02_random_2_00.txt, 02_random_2_01.txt, 02_random_2_02.txt, 02_random_2_03.txt, 02_random_2_04.txt, 02_random_2_05.txt, 02_random_2_06.txt, 02_random_2_07.txt, 02_random_2_08.txt, 02_random_2_09.txt, 02_random_2_10.txt, 02_random_2_11.txt, 02_random_2_12.txt, 02_random_2_13.txt, 02_random_2_14.txt, 03_corner_00.txt, 03_corner_01.txt, 03_corner_02.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 59 ms | 8524 KiB |
00_sample_01.txt | AC | 1 ms | 3396 KiB |
00_sample_02.txt | AC | 1670 ms | 20152 KiB |
01_random_1_00.txt | AC | 1479 ms | 18720 KiB |
01_random_1_01.txt | AC | 1535 ms | 19640 KiB |
01_random_1_02.txt | AC | 797 ms | 13928 KiB |
01_random_1_03.txt | AC | 784 ms | 13040 KiB |
01_random_1_04.txt | AC | 1650 ms | 19860 KiB |
01_random_1_05.txt | AC | 426 ms | 9112 KiB |
01_random_1_06.txt | AC | 972 ms | 14184 KiB |
01_random_1_07.txt | AC | 330 ms | 8460 KiB |
01_random_1_08.txt | AC | 890 ms | 13212 KiB |
01_random_1_09.txt | AC | 693 ms | 11936 KiB |
02_random_2_00.txt | AC | 1571 ms | 22272 KiB |
02_random_2_01.txt | AC | 1572 ms | 22292 KiB |
02_random_2_02.txt | AC | 1576 ms | 22328 KiB |
02_random_2_03.txt | AC | 1623 ms | 21364 KiB |
02_random_2_04.txt | AC | 1630 ms | 21200 KiB |
02_random_2_05.txt | AC | 1626 ms | 21200 KiB |
02_random_2_06.txt | AC | 1526 ms | 23056 KiB |
02_random_2_07.txt | AC | 1520 ms | 23224 KiB |
02_random_2_08.txt | AC | 1525 ms | 23072 KiB |
02_random_2_09.txt | AC | 1666 ms | 20396 KiB |
02_random_2_10.txt | AC | 1668 ms | 20408 KiB |
02_random_2_11.txt | AC | 1666 ms | 20476 KiB |
02_random_2_12.txt | AC | 1639 ms | 20600 KiB |
02_random_2_13.txt | AC | 1640 ms | 20748 KiB |
02_random_2_14.txt | AC | 1644 ms | 20680 KiB |
03_corner_00.txt | AC | 1 ms | 3556 KiB |
03_corner_01.txt | AC | 1029 ms | 36784 KiB |
03_corner_02.txt | AC | 114 ms | 8608 KiB |