标签:name 大小 long 完全 scan turn 个数 i++ 一个
// #include<bits/stdc++.h> using namespace std; #define ll long long ll a[3000000],b[3000000]; ll n,m; ll p,q; ll sum[80000],tot; ll sum1[80000],tot1; ll A,B,C,D,E,F; ll ksm(ll a,ll b) { ll ans=1; while(b) { if(b&1) ans=(ans*a)%p; b>>=1; a=(a*a)%p; } return ans; } int main() { scanf("%lld%lld",&p,&q); scanf("%lld%lld%lld%lld%lld%lld",&n,&a[1],&a[2],&A,&B,&C); scanf("%lld%lld%lld%lld%lld%lld",&m,&b[1],&b[2],&D,&E,&F); sum[(b[1]%(p-1)+(p-1))%(p-1)]++; sum[(b[2]%(p-1)+(p-1))%(p-1)]++; sum1[(a[1]+p)%p]++; sum1[(a[2]+p)%p]++; for(int i=3;i<=m;i++) { b[i]=((D%(p-1))*(b[i-1]%(p-1))+(E%(p-1))*(b[i-2]%(p-1))+F%(p-1))%(p-1); sum[(((b[i]%(p-1)+p-1))%(p-1))]++; } for(int i=3;i<=n;i++) { a[i]=((A%p)*a[i-1]-(B%p)*a[i-2]-(C%p)+p)%p; sum1[(a[i]+p)%p]++; } ll ans=0; for(int i=0;i<=p-1;i++) for(int j=0;j<p-1;j++) { if(sum[j]&&sum1[i]) if((ksm(i,j))<=q) ans+=(sum[j]*sum1[i]); } printf("%lld",ans); }
标签:name 大小 long 完全 scan turn 个数 i++ 一个
原文地址:https://www.cnblogs.com/OIEREDSION/p/11324686.html