제출 #715029

#제출 시각아이디문제언어결과실행 시간메모리
715029TheConverseEngineerVepar (COCI21_vepar)C++17
30 / 70
1577 ms39508 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...