http://acm.hdu.edu.cn/showproblem.php?pid=4218
题目:给一个2r的正方形,中心为(r,r)d为正方形内及其边上整点(i,j)到(r,r)的距离,如果(i,j)对应的的,满足|d*d-r*r|<=3,将(i,j)这个点设为*,否则有空格,最后输出这个正方形。
按要求画圆即可,注意“if the square root of the difference between the square of its distance to the center and the square of the radius is less than 1.732”square指平方,square root指平方根。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<algorithm>
#include<map>
#include<cmath>
using namespace std;
#define N 1005
#define M 1.7320508075689
char a[N][N];
long double clu(int x1,int y1,int x2,int y2)
{
long double ans;
ans=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
return ans;
}
int main()
{
//freopen("a","r",stdin);
int t,i,j;
scanf("%d",&t);
for (int k=1;k<=t;k++)
{
int r;
printf("Case %d:\n",k);
scanf("%d",&r);
for (i=0;i<=2*r;i++)
for (j=0;j<=2*r;j++)
{
int dis=(i-r)*(i-r)+(j-r)*(j-r);
int r1=r*r;
long double q1=dis,q2=r1;
long double q=fabs(q1-q2);
q=sqrt(q);
if (q<M) a[i][j]='*';
else a[i][j]=' ';
}
for (i=0;i<=2*r;i++)
{
for (j=0;j<=2*r;j++) printf("%c",a[i][j]);
printf("\n");
}
}
return 0;
}