2483 - G
时间限制 : 1 秒
内存限制 : 128 MB
在一个由1*1的小正方形切分的网格的中心,放置一个半径为r的圆,求完全被包含在圆内的小正方形个数,和部分被包含的正方形个数。

题目输入
圆的半径N(一个浮点数,小于100000)
题目输出
完全被包含的正方形个数和部分被包含的正方形个数,用空格隔开
输入/输出样例
输入格式
2.0 3.0 2.1 2.5
输出格式
4 12 16 20 4 20 12 20
C++解答
#include <cstdio> #include <iostream> #include <cstring> #include <cmath> #include <algorithm> using namespace std; int main(){ double R; while(scanf("%lf",&R)!=EOF){ long long solid=0,partial=0; double y,yy; for(long long i=1;i<R;i++){ y=sqrt(R*R-i*i); yy=sqrt(R*R-(i-1)*(i-1)); partial+=ceil(yy)-floor(y); solid+=floor(y); } partial+=ceil(y); printf("%lld %lld\n",solid*4,partial*4); } return 0; }