UVA 356 - Square Pegs And Round Holes
Posted carered
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA 356 - Square Pegs And Round Holes相关的知识,希望对你有一定的参考价值。
题目:在一个2n*2n的网格中间画一个直径为2n-1的圆,问圆内部的格子以及和圆相交的格子个数。
思路:只要考虑1 / 4圆的点就行,用点到原点距离与半径比较,当格子左下方和右上方都在格子里时,格子在圆内部。
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int sqr(int n, int m) 4 5 return m * m + n * n; 6 7 int main() 8 9 int n; 10 int cnt = 0; 11 while(cin >> n) 12 13 if(cnt++) cout << endl; 14 double r = (n - 0.5) *(n - 0.5); 15 int in = 0; 16 int side = 0; 17 for(int i = 0;i < n;i++) 18 19 for(int j = 0;j < n;j++) 20 21 if(sqr(i , j) < r && sqr(i + 1, j + 1) < r ) in ++; 22 else if(sqr(i , j) < r && sqr(i + 1, j + 1) > r) side++; 23 24 25 printf("In the case n = %d, %d cells contain segments of the circle.\n",n,side*4); 26 printf("There are %d cells completely contained in the circle.\n",in*4); 27 28 return 0; 29
以上是关于UVA 356 - Square Pegs And Round Holes的主要内容,如果未能解决你的问题,请参考以下文章