2483 - G

通过次数

0

提交次数

0

时间限制 : 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;
}