P1652 圆
题解
对于一个圆而言,如果两个点都在其内或其外,那么这个圆是不会经过的
所以穿过的圆是其中一个点在里面,另一个点在外面
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;
}

浙公网安备 33010602011771号