#include <bits/stdc++.h> using namespace std; // Przykładowe niepoprawne rozwiązanie do zadania Dzielniki. #include "dzilib.h" int i,j,mp,k; long long d,x,d2; array<long long,2> w; vector<int> dd; int cc; int pr; vector<array<long long,2>> g,f; int main() { int t = GetT(); long long n = GetN(); int q = GetQ(); long long c = GetC(); //2^13 *3^8 *5^6 *7^3 *11^2 *13 =453109168512000000 while(t--) { pr=2; if(c<1e17) mp=37; else mp=53; //mp=31; d=Ask(0); x=1; g.push_back({0,d}); for(i=1;i<mp;i++) { f={}; for(auto w:g) { //w=g[j]; //cout << w[0] << ' ' << ' ' << x << ' ' << w[0]+x << '\n'; dd={w[1]}; for(j=1;j<pr;j++) { dd.push_back(Ask(w[0]+j*x)); } cc=0; for(k=0;k<pr;k++) if (dd[k]%i==0) cc++; if(cc<pr-1) continue; for(j=0;j<pr;j++) if(dd[j]>i && ((dd[j]%i==0 && cc==pr) || (dd[j]%i!=0))) f.push_back({w[0]+j*x,dd[j]}); } g=f; x*=pr; //cout << g.size() << ' ' << i << '\n'; } for(auto w:f) if(w[1]==mp) { //cout << "AAA" << (x-w[0]) << '\n'; Answer(x-w[0]); break; } } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include <bits/stdc++.h> using namespace std; // Przykładowe niepoprawne rozwiązanie do zadania Dzielniki. #include "dzilib.h" int i,j,mp,k; long long d,x,d2; array<long long,2> w; vector<int> dd; int cc; int pr; vector<array<long long,2>> g,f; int main() { int t = GetT(); long long n = GetN(); int q = GetQ(); long long c = GetC(); //2^13 *3^8 *5^6 *7^3 *11^2 *13 =453109168512000000 while(t--) { pr=2; if(c<1e17) mp=37; else mp=53; //mp=31; d=Ask(0); x=1; g.push_back({0,d}); for(i=1;i<mp;i++) { f={}; for(auto w:g) { //w=g[j]; //cout << w[0] << ' ' << ' ' << x << ' ' << w[0]+x << '\n'; dd={w[1]}; for(j=1;j<pr;j++) { dd.push_back(Ask(w[0]+j*x)); } cc=0; for(k=0;k<pr;k++) if (dd[k]%i==0) cc++; if(cc<pr-1) continue; for(j=0;j<pr;j++) if(dd[j]>i && ((dd[j]%i==0 && cc==pr) || (dd[j]%i!=0))) f.push_back({w[0]+j*x,dd[j]}); } g=f; x*=pr; //cout << g.size() << ' ' << i << '\n'; } for(auto w:f) if(w[1]==mp) { //cout << "AAA" << (x-w[0]) << '\n'; Answer(x-w[0]); break; } } return 0; } |