// Przyk艂adowe niepoprawne rozwi膮zanie do zadania Dzielniki.
#include "dzilib.h"
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<algorithm>
#include<bits/stdc++.h>
#define pr pair
#define f first
#define s second
#define ll long long
#define mp make_pair
#define pll pr<ll,ll>
#define pii pr<int,int>
#define piii pr<int,pii>
using namespace std;
ll c,n;
const int hl[16]={1,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};
//void Answer(ll x)
//{
// cout<<"Answer "<<x<<endl;
//}
//ll sx;
//void ax()
//{
// cin>>sx;
//}
//ll Ask(ll x)
//{
//// cout<<"Ask "<<x<<' ';
// x+=sx;
// ll rt=0;
// for(ll i=1;i*i<=x;i++)
// {
// if(x%i==0)
// {
// rt++;
// if(x/i>i) rt++;
// }
// }
//// cout<<rt<<endl;
// return rt;
//}
void sl()
{
// ax();
ll cm=1,cz=0;
for(int i=1;i<16;i++)
{
if(cm>n) break;
int df=hl[i]-hl[i-1];
vector<ll> ps;
for(int j=1;j<=2<<df;j++)
{
if(Ask(j*cm+cz)%hl[i]==0)
{
ps.push_back(j*cm+cz);
}
}
cm<<=df;
vector<ll> np;
int g=0;
while(ps.size()>1)
{
np.clear();
g++;
for(ll x:ps)
{
if(Ask(x+cm*2*g)%hl[i]==0)
{
np.push_back(x);
}
}
ps=np;
}
cz=ps[0];
// cout<<"Fn "<<cm<<' '<<n<<endl;
}
Answer(cm-cz%cm);
}
//int GetT()
//{
// int x;
// cin>>x;
// return x;
//}
//int GetQ()
//{
// int x;
// cin>>x;
// return x;
//}
//ll GetC()
//{
// ll x;
// cin>>x;
// return x;
//}
//ll GetN()
//{
// ll x;
// cin>>x;
// return x;
//}
int main() {
int t = GetT();
n = GetN();
int q = GetQ();
c = GetC();
while(t--) sl();
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | // Przyk艂adowe niepoprawne rozwi膮zanie do zadania Dzielniki. #include "dzilib.h" #include<set> #include<map> #include<queue> #include<vector> #include<algorithm> #include<bits/stdc++.h> #define pr pair #define f first #define s second #define ll long long #define mp make_pair #define pll pr<ll,ll> #define pii pr<int,int> #define piii pr<int,pii> using namespace std; ll c,n; const int hl[16]={1,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53}; //void Answer(ll x) //{ // cout<<"Answer "<<x<<endl; //} //ll sx; //void ax() //{ // cin>>sx; //} //ll Ask(ll x) //{ //// cout<<"Ask "<<x<<' '; // x+=sx; // ll rt=0; // for(ll i=1;i*i<=x;i++) // { // if(x%i==0) // { // rt++; // if(x/i>i) rt++; // } // } //// cout<<rt<<endl; // return rt; //} void sl() { // ax(); ll cm=1,cz=0; for(int i=1;i<16;i++) { if(cm>n) break; int df=hl[i]-hl[i-1]; vector<ll> ps; for(int j=1;j<=2<<df;j++) { if(Ask(j*cm+cz)%hl[i]==0) { ps.push_back(j*cm+cz); } } cm<<=df; vector<ll> np; int g=0; while(ps.size()>1) { np.clear(); g++; for(ll x:ps) { if(Ask(x+cm*2*g)%hl[i]==0) { np.push_back(x); } } ps=np; } cz=ps[0]; // cout<<"Fn "<<cm<<' '<<n<<endl; } Answer(cm-cz%cm); } //int GetT() //{ // int x; // cin>>x; // return x; //} //int GetQ() //{ // int x; // cin>>x; // return x; //} //ll GetC() //{ // ll x; // cin>>x; // return x; //} //ll GetN() //{ // ll x; // cin>>x; // return x; //} int main() { int t = GetT(); n = GetN(); int q = GetQ(); c = GetC(); while(t--) sl(); return 0; } |
English