This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define sqr(x) ((ll)(x))*(x)
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
int T;
int factorsLeft[10000000];
bool test(int c, int d) {
for (int i = c; i <= d; i++) {
int x = i;
while (x%2 == 0) { factorsLeft[2]--; x /= 2; if (factorsLeft[2] < 0) return false; }
for (int factor = 3; (ll)factor*factor <= x; factor+=2) {
while (x%factor == 0) { x /= factor; factorsLeft[factor]--; if (factorsLeft[factor] < 0) return false;}
}
if (x > 2) {
factorsLeft[x]--;
if (factorsLeft[x] < 0) return false;
}
}
return true;
}
int main() {
cin.tie(0)->sync_with_stdio(0);
cin >> T;
FOR(testcase, 0, T) {
FOR(i, 0, 10000000) factorsLeft[i] = 0;
int a, b, c, d; cin >> a >> b >> c >> d;
for (int i = c; i <= d; i++) {
int x = i;
while (x%2 == 0) { factorsLeft[2]++; x /= 2; }
for (int factor = 3; (ll)factor*factor <= x; factor+=2) {
while (x%factor == 0) { x /= factor; factorsLeft[factor]++;}
}
if (x > 2) factorsLeft[x]++;
}
cout << (test(a, b)?"DA":"NE") << "\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |