就是直接拿double会有精度问题,所以我们存下-b/a的最简形式
int a[MAXN],b[MAXN];
map<pair<int,int>,int>mp;
int gcd(int x,int y){return (y==0?x:gcd(y,x%y));}
void solve()
{
int n;cin>>n;
rpp(i,n) cin>>a[i];
rpp(i,n) cin>>b[i];
int tag=0;
rpp(i,n)
{
if(a[i])
{
if(b[i]==0) ++mp[make_pair(0,0)];
else
{
int tmp=gcd(a[i],b[i]);
++mp[make_pair(-b[i]/tmp,a[i]/tmp)];
}
}
else if(b[i]==0) ++tag;
}
int ans=0;
for(auto it=mp.begin();it!=mp.end();++it)
ans=max(ans,it->second);
cout<<ans+tag<<endl;
}
signed main()
{
fast;
solve();
return 0;
}