QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#561895 | #4951. Fun with Stones | binminh01 | AC ✓ | 0ms | 4076kb | C++23 | 8.2kb | 2024-09-13 12:27:22 | 2024-09-13 12:27:22 |
Judging History
answer
#include<bits/allocator.h>
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx2,fma,bmi,bmi2,popcnt,lzcnt")
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define int128 __int128_t
#define double long double
#define gcd __gcd
#define lcm(a, b) ((a)/gcd(a, b)*(b))
#define sqrt sqrtl
#define log2 log2l
#define log10 log10l
#define floor floorl
#define to_string str
#define yes cout << "YES"
#define no cout << "NO"
#define trav(i, a) for (auto &i: (a))
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define sz(a) (int)a.size()
#define Max(a) *max_element(all(a))
#define Min(a) *min_element(all(a))
#define Find(a, n) (find(all(a), n) - a.begin())
#define Count(a, n) count(all(a), n)
#define Upper(a, n) (upper_bound(all(a), n) - a.begin())
#define Lower(a, n) (lower_bound(all(a), n) - a.begin())
#define next_perm(a) next_permutation(all(a))
#define prev_perm(a) prev_permutation(all(a))
#define sorted(a) is_sorted(all(a))
#define sum(a) accumulate(all(a), 0)
#define sumll(a) accumulate(all(a), 0ll)
#define Sort(a) sort(all(a))
#define Reverse(a) reverse(all(a))
#define Unique(a) Sort(a), (a).resize(unique(all(a)) - a.begin())
#define pb push_back
#define eb emplace_back
#define popcount __builtin_popcount
#define popcountll __builtin_popcountll
#define clz __builtin_clz
#define clzll __buitlin_clzll
#define ctz __builtin_ctz
#define ctzll __builtin_ctzll
#define open(s) freopen(s, "r", stdin)
#define write(s) freopen(s, "w", stdout)
#define fileopen(s) open((string(s) + ".inp").c_str()), write((string(s) + ".out").c_str());
#define For(i, a, b) for (auto i = (a); i < (b); ++i)
#define Fore(i, a, b) for (auto i = (a); i >= (b); --i)
#define FOR(i, a, b) for (auto i = (a); i <= (b); ++i)
#define ret(s) return void(cout << s);
const int mod = 1e9 + 7, mod2 = 998244353;
const double PI = acos(-1), eps = 1e-9;
const ull npos = string::npos;
const int dx[] = {0, 0, -1, 1}, dy[] = {-1, 1, 0, 0};
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using cd = complex<double>;
mt19937 mt(chrono::system_clock::now().time_since_epoch().count());
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef vector<double> vdo;
typedef vector<vdo> vvdo;
typedef vector<string> vs;
typedef vector<pii> vpair;
typedef vector<vpair> vvpair;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef vector<char> vc;
typedef vector<vc> vvc;
typedef vector<cd> vcd;
typedef priority_queue<int> pq;
typedef priority_queue<int, vi, greater<int>> pqg;
typedef priority_queue<ll> pqll;
typedef priority_queue<ll, vll, greater<ll>> pqgll;
ll add(ll a, ll b, int m) {if (a >= m) a%=m;if (b >= m) b%=m;a+=b;return a >= m ? a - m: a;}
ll sub(ll a, ll b, int m) {if (a >= m) a%=m;if (b >= m) b%=m;a-=b;return a < 0 ? a + m: a;}
ll mul(ll a, ll b, int m) {if (a >= m) a%=m;if (b >= m) b%=m;return a*b % m;}
ll bin_mul(ll a, ll b, ll m) {if (a >= m) a%=m;if (b >= m) b%=m;ll x = 0;while (b) {if (b & 1) x = (x + a) % m;a = (a + a) % m;b>>=1;}return x;}
ll bin_pow(ll a, ll b, ll m) {ll x = 1;if (a >= m) a%=m; while (b) {if (b & 1) x = bin_mul(x, a, m);a = bin_mul(a, a, m);b>>=1;}return x;}
ll power(ll a, ll b, int m) {ll x = 1;if (a >= m) a%=m; while (b) {if (b & 1) x = x*a % m;a = a*a % m;b>>=1;}return x;}
ll power(ll a, ll b) {ll x = 1;while (b) {if (b & 1) x = x*a;a = a*a;b>>=1;}return x;}
ll ceil(ll a, ll b) {return (a + b - 1)/b;}
ll to_int(const string &s) {ll x = 0; for (int i = (s[0] == '-'); i < sz(s); ++i) x = x*10 + s[i] - '0';return x*(s[0] == '-' ? -1: 1);}
bool is_prime(ll n) {if (n < 2) return 0;if (n < 4) return 1;if (n % 2 == 0 || n % 3 == 0) return 0;for (ll i = 5; i*i <= n; i+=6) {if(n % i == 0 || n % (i + 2) == 0) return 0;}return 1;}
bool is_square(ll n) {ll k = sqrt(n); return k*k == n;}
ll factorial(int n) {ll x = 1;for (int i = 2; i <= n; ++i) x*=i;return x;}
ll factorial(int n, int m) {ll x = 1;for (ll i = 2; i <= n; ++i) x = x*i % m;return x;}
bool is_power(ll n, ll k) {while (n % k == 0) n/=k;return n == 1ll;}
string str(ll n) {if (n == 0) return "0"; string s = ""; bool c = 0; if (n < 0) c = 1, n = -n; while (n) {s+=n % 10 + '0'; n/=10;} if (c) s+='-'; Reverse(s); return s;}
string repeat(const string &s, int n) {if (n < 0) return ""; string x = ""; while (n--) x+=s; return x;}
string bin(ll n) {string s = ""; while (n) {s+=(n & 1) + '0'; n>>=1;} Reverse(s); return s;}
void sieve(vector<bool> &a) {int n = a.size(); a[0] = a[1] = 0; for (int i = 4; i < n; i+=2) a[i] = 0; for (int i = 3; i*i < n; i+=2) {if (a[i]) {for (int j = i*i; j < n; j+=(i << 1)) a[j] = 0;}}}
void sieve(bool a[], int n) {a[0] = a[1] = 0; for (int i = 4; i < n; i+=2) a[i] = 0; for (int i = 3; i*i < n; i+=2) {if (a[i]) {for (int j = i*i; j < n; j+=(i << 1)) a[j] = 0;}}}
void sieve(vector<int> &a) {int n = a.size(); for (int i = 2; i < n; i+=2) a[i] = 2; for (int i = 3; i*i < n; i+=2) {if (!a[i]) {for (int j = i; j < n; j+=(i << 1)) a[j] = i;}} for (int i = 3; i < n; i+=2) {if (!a[i]) a[i] = i;}}
void sieve(int a[], int n) {for (int i = 2; i < n; i+=2) a[i] = 2; for (int i = 3; i*i < n; i+=2) {if (!a[i]) {for (int j = i; j < n; j+=(i << 1)) a[j] = i;}} for (int i = 3; i < n; i+=2) {if (!a[i]) a[i] = i;}}
vector<pii> factorize(int n) {vector<pii> a; for (int i = 2; i*i <= n; ++i) {if (n % i == 0) {int k = 0; while (n % i == 0) ++k, n/=i; a.emplace_back(i, k);}} if (n > 1) a.emplace_back(n, 1); return a;}
int rand(int l, int r) {return uniform_int_distribution<int>(l, r)(mt);}
int Log2(int n) {return 31 - __builtin_clz(n);}
template<class T> void compress(vector<T> &a) {vector<T> b; for (T &i: a) b.push_back(i); sort(all(b)); b.resize(unique(all(b)) - b.begin()); for (T &i: a) i = lower_bound(all(b), i) - b.begin() + 1;}
template<class A, class B> istream& operator>>(istream& in, pair<A, B> &p) {in >> p.first >> p.second; return in;}
template<class A, class B> ostream& operator<<(ostream& out, const pair<A, B> &p) {out << p.first << ' ' << p.second; return out;}
template<class T> istream& operator>>(istream& in, vector<T> &a) {for (auto &i: a) in >> i; return in;}
template<class T> ostream& operator<<(ostream& out, const vector<T> &a) {for (auto &i: a) out << i << ' '; return out;}
template<class T> istream& operator>>(istream& in, vector<vector<T>> &a) {for (auto &i: a) in >> i; return in;}
template<class T> ostream& operator<<(ostream& out, const vector<vector<T>> &a) {for (auto &i: a) out << i << '\n'; return out;}
template<class T> istream& operator>>(istream& in, deque<T> &a) {for (auto &i: a) in >> i; return in;}
template<class T> ostream& operator<<(ostream& out, const deque<T> &a) {for (auto &i: a) out << i << ' '; return out;}
// istream& operator>>(istream& in, __int128_t &a) {string s; in >> s; a = 0; for (auto &i: s) a = a*10 + (i - '0'); return in;}
// ostream& operator<<(ostream& out, __int128_t a) {string s = ""; while (a > 0) {s+=(int)(a % 10) + '0'; a/=10;} Reverse(s); out << s; return out;}
constexpr int bit(int n, int i) {return (n >> i) & 1;}
int l1, l2, l3, r1, r2, r3;
ll f[32][2][2][2][2][2][2];
ll cal(int i, bool ga, bool la, bool gb, bool lb, bool gc, bool lc) {
if (i == -1) return 1;
if (f[i][ga][la][gb][lb][gc][lc] != -1) return f[i][ga][la][gb][lb][gc][lc];
ll x = 0;
FOR(j,0,1){
FOR(k,0,1){
int t = j^k;
if (!ga && j < bit(l1, i)) continue;
if (!gb && k < bit(l2, i)) continue;
if (!gc && t < bit(l3, i)) continue;
if (!la && j > bit(r1, i)) continue;
if (!lb && k > bit(r2, i)) continue;
if (!lc && t > bit(r3, i)) continue;
x = add(x, cal(i - 1, ga|(j > bit(l1, i)), la|(j < bit(r1, i)), gb|(k > bit(l2, i)), lb|(k < bit(r2, i)), gc|(t > bit(l3, i)), lc|(t < bit(r3, i))), mod);
}
}
return f[i][ga][la][gb][lb][gc][lc] = x;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
cout << fixed << setprecision(10);
cin >> l1 >> r1 >> l2 >> r2 >> l3 >> r3;
memset(f, -1, sizeof(f));
cout << sub(1, cal(31, 0, 0, 0, 0, 0, 0)*power(1ll*(r1 - l1 + 1)*(r2 - l2 + 1) % mod*(r3 - l3 + 1) % mod, mod - 2, mod) % mod, mod);
cerr << "\nProcess returned 0 (0x0) execution time : " << 0.001*clock() << " s";
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 4016kb
input:
3 3 4 4 5 5
output:
1
result:
ok single line: '1'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3920kb
input:
4 4 8 8 12 12
output:
0
result:
ok single line: '0'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3992kb
input:
1 10 1 10 1 10
output:
580000005
result:
ok single line: '580000005'
Test #4:
score: 0
Accepted
time: 0ms
memory: 4008kb
input:
5 15 2 9 35 42
output:
1
result:
ok single line: '1'
Test #5:
score: 0
Accepted
time: 0ms
memory: 4048kb
input:
1 1000000000 1 1000000000 1 1000000000
output:
299894316
result:
ok single line: '299894316'
Test #6:
score: 0
Accepted
time: 0ms
memory: 3892kb
input:
1 2 1 3 2 2
output:
833333340
result:
ok single line: '833333340'
Test #7:
score: 0
Accepted
time: 0ms
memory: 3928kb
input:
1 4 4 5 6 8
output:
833333340
result:
ok single line: '833333340'
Test #8:
score: 0
Accepted
time: 0ms
memory: 4064kb
input:
1 9 1 13 9 9
output:
564102569
result:
ok single line: '564102569'
Test #9:
score: 0
Accepted
time: 0ms
memory: 4072kb
input:
4 12 8 18 12 13
output:
414141418
result:
ok single line: '414141418'
Test #10:
score: 0
Accepted
time: 0ms
memory: 3976kb
input:
4 7 17 21 7 21
output:
673333339
result:
ok single line: '673333339'
Test #11:
score: 0
Accepted
time: 0ms
memory: 3892kb
input:
2 61 3 60 10 93
output:
279638755
result:
ok single line: '279638755'
Test #12:
score: 0
Accepted
time: 0ms
memory: 3932kb
input:
810 999 256 351 6 979
output:
196098565
result:
ok single line: '196098565'
Test #13:
score: 0
Accepted
time: 0ms
memory: 4060kb
input:
3109 7253 2441 3890 525 9135
output:
43527070
result:
ok single line: '43527070'
Test #14:
score: 0
Accepted
time: 0ms
memory: 4012kb
input:
42812 73389 73306 93847 21663 66194
output:
610692328
result:
ok single line: '610692328'
Test #15:
score: 0
Accepted
time: 0ms
memory: 3948kb
input:
485877 648130 433229 433236 370556 554373
output:
1
result:
ok single line: '1'
Test #16:
score: 0
Accepted
time: 0ms
memory: 3880kb
input:
5044520 6504333 223662 8156181 5745189 6213525
output:
883444596
result:
ok single line: '883444596'
Test #17:
score: 0
Accepted
time: 0ms
memory: 3912kb
input:
37471110 72058075 9972235 10428464 7869118 43549024
output:
490426752
result:
ok single line: '490426752'
Test #18:
score: 0
Accepted
time: 0ms
memory: 4076kb
input:
96374951 246184385 444926463 483438974 275897159 398398745
output:
633889913
result:
ok single line: '633889913'
Test #19:
score: 0
Accepted
time: 0ms
memory: 4072kb
input:
7 88 24 25 65 88
output:
155741872
result:
ok single line: '155741872'
Test #20:
score: 0
Accepted
time: 0ms
memory: 3892kb
input:
69 72 40 64 89 90
output:
1
result:
ok single line: '1'
Test #21:
score: 0
Accepted
time: 0ms
memory: 3944kb
input:
19 83 11 82 1 15
output:
651452997
result:
ok single line: '651452997'
Test #22:
score: 0
Accepted
time: 0ms
memory: 4016kb
input:
79 95 52 64 60 60
output:
1
result:
ok single line: '1'
Test #23:
score: 0
Accepted
time: 0ms
memory: 4056kb
input:
48 85 89 91 22 74
output:
985104278
result:
ok single line: '985104278'
Test #24:
score: 0
Accepted
time: 0ms
memory: 4008kb
input:
45 87 39 87 41 79
output:
1
result:
ok single line: '1'
Test #25:
score: 0
Accepted
time: 0ms
memory: 3980kb
input:
7 41 14 28 74 95
output:
1
result:
ok single line: '1'
Test #26:
score: 0
Accepted
time: 0ms
memory: 3944kb
input:
26 89 45 52 22 86
output:
242307695
result:
ok single line: '242307695'
Test #27:
score: 0
Accepted
time: 0ms
memory: 3944kb
input:
30 82 35 48 14 26
output:
943396234
result:
ok single line: '943396234'
Test #28:
score: 0
Accepted
time: 0ms
memory: 4064kb
input:
42 69 80 89 55 70
output:
1
result:
ok single line: '1'
Test #29:
score: 0
Accepted
time: 0ms
memory: 3992kb
input:
183657317 788456724 67738060 251489322 715104415 879081833
output:
694577592
result:
ok single line: '694577592'
Test #30:
score: 0
Accepted
time: 0ms
memory: 4012kb
input:
51376686 338536649 195081223 358293325 181017581 860224794
output:
760169461
result:
ok single line: '760169461'
Test #31:
score: 0
Accepted
time: 0ms
memory: 4060kb
input:
190986221 361411112 596935424 975177845 313893500 675371663
output:
145742728
result:
ok single line: '145742728'
Test #32:
score: 0
Accepted
time: 0ms
memory: 3912kb
input:
190733803 564415702 373698485 922011732 455000347 762806423
output:
501682443
result:
ok single line: '501682443'
Test #33:
score: 0
Accepted
time: 0ms
memory: 4068kb
input:
617340692 983059625 608658415 972777698 140783644 985872599
output:
541639573
result:
ok single line: '541639573'