-
题目:方格计数
如图所示,在二维平面上有无数个1x1的小方格。
我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。
你能计算出这个圆里有多少个完整的小方格吗? -
解题思路:
由于对称性,把整个圆分成四个象限,计算出一个象限中圆内包含的格子数,乘以4就是答案
以第一象限为例,按照每个格子的右上角计数,枚举所有格子的右上角。因为只要一个格子的右上角在圆内,那么这个方格就一定在圆中。
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int cnt = 0;
for(int i = 1; i <= 1000; i++)
for(int j = 1; j <= 1000; j++)
if(sqrt(i*i + j*j) <= 1000) cnt++;
cout << cnt * 4 << endl;
return 0;
}
答案:3137548