#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[120];
ll b[120];
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
ll x0,y0,ax,ay,bx,by;
cin>>x0>>y0>>ax>>ay>>bx>>by;
a[0] = x0;
b[0] = y0;
ll xs,ys,t;
cin>>xs>>ys>>t;
int n=0;
for(int i=1;i<70;i++)
{
a[i] = ax*a[i-1] + bx;
b[i] = ay*b[i-1] + by;
if((a[i]-a[i-1]+b[i]-b[i-1])>t&&(a[i]>xs||b[i]>ys))
{
n = i;
break;
}
}
ll mmax = 0;
ll temp = t;
for(int i=0;i<=n;i++)
{
t = temp;
ll cut = 0,x=0;
t-=(abs(xs - a[i]) + abs(ys - b[i]));
if(t>0) cut++;
else if(t==0)
{
cut+=1;
mmax = max(mmax,cut);
continue;
}else
{
continue;
}
for(int j=i-1;j>=0;j--)
{
t -= (abs(a[j] - a[j+1]) + abs(b[j] - b[j+1]));
if(t>0) cut++;
else if(t==0)
{
cut+=1;
x = j;
mmax = max(mmax,cut);
continue;
}else
{
x = j+1;
mmax = max(mmax,cut);
continue;
}
}
t -= (abs(a[i+1] - a[x]) + abs(b[i+1] - b[x]));
if(t>0) cut++;
else if(t==0)
{
cut+=1;
mmax = max(mmax,cut);
continue;
}else
{
mmax = max(mmax,cut);
continue;
}
for(int j = i+2;j<n;j++)
{
t -= (abs(a[j] - a[j-1]) + abs(b[j] - b[j-1]));
if(t>0) cut++;
else if(t==0)
{
cut+=1;
mmax = max(mmax,cut);
continue;
}else
{
mmax = max(mmax,cut);
continue;
}
}
mmax = max(mmax,cut);
}
cout<<mmax<<endl;
return 0;
}
模拟题啊模拟题(警钟敲响,数据范围很大但是点可能很少,且与其推式子不如先打表观察性质)
最新推荐文章于 2024-07-19 15:39:46 发布