P1652 圓

纯粹的發表於2024-03-20

原題連結

題解

對於一個圓而言,如果兩個點都在其內或其外,那麼這個圓是不會經過的
所以穿過的圓是其中一個點在裡面,另一個點在外面

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;
}

相關文章