传说中的尺取法。就两个指针移来移去。。。。
#include<bits/stdc++.h>
using namespace std;
const int MAXN=10001000;
long long a[MAXN];
int main()
{
long long n,k,t,b,c,p,ans,sum,p1,p2,i;
while(~scanf("%lld%lld%lld%lld%lld%lld%lld",&n,&k,&t,&a[0],&b,&c,&p))
{
for(i=1;i<=n;i++)
a[i]=(a[i-1]*b+c)%p;
ans=0;
p1=1;
p2=0;
sum=0;
for(;;)
{
while(p2<n&&sum<k)
{
p2++;
if(a[p2]>=t)
sum++;
}
if(sum>=k)
ans+=n-p2+1;
else
break;
p1++;
if(a[p1-1]>=t)
sum--;
if(p1==n+1)
break;
}
printf("%lld\n",ans);
}
}