QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#212929 | #6824. Demonstrational Sequences | nameless_story# | WA | 1022ms | 51964kb | C++23 | 2.1kb | 2023-10-13 23:11:43 | 2023-10-13 23:11:44 |
Judging History
answer
#include"bits/stdc++.h"
using namespace std;
typedef unsigned long long ll;
template<class T1,class T2> bool cmax(T1 &x,const T2 &y) { if (x<y) { x=y; return 1; }return 0; }
#define all(x) (x).begin(),(x).end()
const ll N=1e7+2,M=1e4+5,NN=7e6+5,Q=1<<20|5;
bool ed[N];
ll c[NN+1];
mt19937 rnd(235);
vector<int> buc[Q];
int main()
{
ios::sync_with_stdio(0); cin.tie(0);
cout<<fixed<<setprecision(15);
ll p,q,i,j;
int T;
cin>>p>>q>>T;
p/=q;
map<pair<ll,ll>,int> ans;
for (i=0; i<N; i++) if (gcd(i,p)==1) ed[i]=1;
p*=q;
// assert(ed[2]);
while (T--)
{
auto cal=[&]()
{
ll a,b,d,dmq;
int tot=1e6,i,j;
for (i=0; i<q; i++) buc[i].clear();
cin>>a>>b;
// a=b=0;
// a=2022; b=924;
a%=p; b%=p;
if ((gcd(a,q)==1&&gcd(b,q)==1)&&q>=100000) return 1;
if (ans.count({a,b})) return ans[{a,b}];
c[0]=a;
ll R=M;
for (i=1; i<=R; i++) c[i]=(c[i-1]*c[i-1]+b)%p;
// shuffle(c+5000,c+NN+1,rnd);
// cerr<<c[0]<<' '<<c[3]<<' '<<q<<endl;
vector<ll> occ;
for (i=0; i<=R; i++) occ.push_back(c[i]%q);
sort(all(occ)); occ.resize(unique(all(occ))-occ.begin());
for (ll x:occ) buc[x].clear();
for (i=0; i<=R; i++) buc[c[i]%q].push_back(c[i]/q);
// cerr<<occ.size()<<endl;
for (ll x:occ)
{
auto &v=buc[x];
// if (x==1) cerr<<v[0]<<' '<<v[1]<<endl;
sort(all(v));
// if (v.size()>1000) v.resize(1000);
int m=unique(all(v))-v.begin();
if (m!=v.size()&&ed[0]) return ans[{a,b}]=1;
v.resize(m);
// if (x==1) assert(count(all(v),0)&&count(all(v),2));
// cerr<<x<<endl;
// int m=v.size();
for (i=0; i<m; i++)
{
// cerr<<i<<endl;
for (j=i-1; j>=0; j--)
{
// if (x==1&&i==1&&j==0) cerr<<i<<' '<<j<<endl;
if (v[i]-v[j]<N&&ed[v[i]-v[j]]) return ans[{a,b}]=1;
// if (v[j]-v[i]<N&&ed[v[j]-v[i]]) return ans[{a,b}]=1;
// if (v[i]+pq-v[j]<N&&ed[v[i]+pq-v[j]]) return ans[{a,b}]=1;
}
// tot-=min<int>(tot,i-1);
}
}
return ans[{a,b}]=0;
};
cout<<cal();
}
cout<<endl;
}
詳細信息
Test #1:
score: 100
Accepted
time: 213ms
memory: 41660kb
input:
15 5 5 1 1 1 2 2 4 4 8 8 16
output:
11010
result:
ok "11010"
Test #2:
score: 0
Accepted
time: 384ms
memory: 39740kb
input:
998244352 1048576 3 2022 924 12345678 1234567 23333333 6666666
output:
001
result:
ok "001"
Test #3:
score: 0
Accepted
time: 115ms
memory: 39352kb
input:
100237 100237 10 1244422970085542683 6256585832417115176 11178595626727644735 679276059713497324 5646838801370008540 6709514788466664568 9971158657914728691 8724448042786063799 9867649407902336110 2614925263502318093 1990105069810770727 8671216841234378816 7965667786524489724 6722337513023700570 246...
output:
1111111111
result:
ok "1111111111"
Test #4:
score: 0
Accepted
time: 1022ms
memory: 39672kb
input:
1000000007 1 200 1244424352052424851 13102057264748565738 10964128241743967010 11238647915096906960 9602909082986968021 14247804011443894396 13231275623402659328 11122445945926639224 1819715673773979255 15011227386780949150 10389668459305004672 13595253579372877142 136927098471150438 141908708541553...
output:
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
result:
ok "111111111111111111111111111111...1111111111111111111111111111111"
Test #5:
score: 0
Accepted
time: 108ms
memory: 39484kb
input:
1 1 200 1244422970079336291 4707347560601392081 16633665001192110076 15773758607538398243 11070497290011093392 11929979209055974561 8355738147346006300 6479245221430563815 10109334084151275293 11867087657669754231 17442584295523326999 11181890936205849132 9065910826445511105 4364106058213150008 3158...
output:
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
result:
ok "111111111111111111111111111111...1111111111111111111111111111111"
Test #6:
score: 0
Accepted
time: 850ms
memory: 47192kb
input:
1829276567 1223 200 1244422970077270675 3806627635127557106 13984072790700162529 11560843058580181248 18218320506679528544 11095342096011758221 4400021764111680243 2513593206800052431 18199847053143773541 12194057128449124778 13449463383710867755 15111229049249507634 9142159878193341647 851735763810...
output:
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111
result:
ok "111111111111111111111111111111...1111111111111111111111111111111"
Test #7:
score: 0
Accepted
time: 785ms
memory: 49704kb
input:
1916775961 43781 200 1244422991562533611 2581648536462341184 10846740824576506379 9993690399888017205 8345302117372117052 12258730889585496219 6487130277971010241 11996418174856728756 8151541988194450093 17962020692109166031 5265702935744667861 3426174342122309619 3337825504340444832 108442264083652...
output:
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
result:
ok "111111111111111111111111111111...1111111111111111111111111111111"
Test #8:
score: 0
Accepted
time: 787ms
memory: 51964kb
input:
1992104689 44633 200 1244423004569553187 708151091329533332 9122468538725959348 6266937734283537059 17378118143373524488 14143033550582754474 9766586826768167785 1594616520143492866 734438740803221400 11158266026263179425 460036223567287536 4242791159789103332 17830443150457246178 422414602667113372...
output:
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
result:
ok "111111111111111111111111111111...1111111111111111111111111111111"
Test #9:
score: -100
Wrong Answer
time: 129ms
memory: 39416kb
input:
200474 100237 200 1244422970085542683 6256585832417115176 11178595626727644735 679276059713497324 15646838801370008540 16709514788466664568 9971158657914728691 8724448042786063799 9867649407902336110 2614925263502318093 1990105069810770727 8671216841234378816 17965667786524489724 6722337513023700570...
output:
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
result:
wrong answer 1st words differ - expected: '000000001111110100011000010000...0001000000010000000010110000000', found: '111111111111111111111111111111...1111111111111111111111111111111'