乒乓球

来源:互联网 发布:用matlab处理数据 编辑:程序博客网 时间:2024/04/28 13:56

乒乓球

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 13   Accepted Submission(s) : 7

Font: Times New Roman | Verdana | Georgia

Font Size:  

Problem Description

有一场乒乓球比赛,规则如下,加入你现在是其中的一名参赛选手,你站在乒乓球台的一侧,在你的对面有一个发球机器为你发球。在乒乓球桌的另外一边中有3个洞,我们把它们称为大洞,中洞,小洞。如果你把球打进了大洞加一分,中洞加二分,小洞加三分。如果是打在了洞的边界则不加分。如果给你N次击球的机会,并告诉你每次求击中的位置,问你能得多少分。告诉你三个洞的圆心和半径(x,y,r),大洞(30,30,20),中洞(100,30,10),小洞(170,30,5)。

Input

输入的第一行是一个T,表示测试数据的组数。对于每组测试数据的第一行是一个N(0<=N<=60),表示击球的次数,接下来的N对整数是球的落点(x,y),其中(0<=x<=200),(0<=y<=100).

Output

对于每组测试数据输出所得的分数。

Sample Input

3230 31100 32130 50330 3099 30170 30

Sample Output

306 
#include <stdio.h>#include <stdlib.h>#include <math.h>int main(){    int n,m,x,y,cnt;    while(scanf("%d",&n)!=EOF)    {        while (n--)        {            while (scanf("%d",&m)!=EOF)            {  cnt=0;                while (m--)                {                    scanf ("%d%d",&x,&y);                if (x>=10&&x<=50&&y>=10&&y<=50)                {                    if (sqrt((x-30)*(x-30)+(y-30)*(y-30))<20)  cnt++;                    else                        cnt+=0;                }               else  if (x>=90&&x<=110&&y>=20&&y<=40)                {                    if (sqrt((x-100)*(x-100)+(y-30)*(y-30))<10)  cnt+=2;                    else                        cnt+=0;                }                else if (x>=165&&x<=175&&y>=25&&y<=35)                {                    if (sqrt((x-170)*(x-170)+(y-30)*(y-30))<5) cnt+=3;                    else                        cnt+=0;                }                }                printf ("%d\n",cnt);            }        }    }    return 0;}