原題連結
題解
對於一個圓而言,如果兩個點都在其內或其外,那麼這個圓是不會經過的
所以穿過的圓是其中一個點在裡面,另一個點在外面
code
#include<bits/stdc++.h>
using namespace std;
struct node
{
int x,y,r;
}circle[105];
int in(int i,int x,int y)
{
int ox=circle[i].x,oy=circle[i].y,R=circle[i].r;
return (x-ox)*(x-ox)+(y-oy)*(y-oy)<=R*R;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>circle[i].x;
}
for(int i=1;i<=n;i++) cin>>circle[i].y;
for(int i=1;i<=n;i++) cin>>circle[i].r;
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
int ans=0;
for(int i=1;i<=n;i++)
{
if(in(i,x1,y1)+in(i,x2,y2)==1) ans++;
}
cout<<ans<<endl;
return 0;
}