zoukankan      html  css  js  c++  java
  • 圆圈

    圆圈

     

    Problem Description

    在一个二维平面上,每个整数点坐标处都放了一块钱,如(1,2)、(1,1)等。现在以(0,0)为圆心画一个半径为r的圆,问圆内(包括圆圈边)上一共有多少钱。

    Input

    输入有多组测试数据,每组测试数据一行输入一个整数r(r<=25000)表示圆的半径,输入以0结束,最后的0不需要输出0。假设答案不超过2,000,000,000

    Output

    对于每个输入输出钱数。

    Sample Input

    2
    3
    4
    0

    Sample Output

    13
    29
    49

    解释:

    这算是一个数学题吧,

    4: 49 = 48 + 1 = 4 * 12 + 1 = 4 * (4 + 8) + 1 ;

    3:29 = 28 + 1 = 4 * 7 + 1 = 4 * (3 + 4) + 1;

    所以只要确定,一个数字,就可以确定最后答案了,例如4中的那个8,3中的那个4. 

    4: 8 = 3 + 3 + 2

    3:4 = 2 + 2

    其实就是 横坐标为1的时候,一直到n-1, 在圆中纵坐标的最大值的求和。

     1 #include<bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 int main () {
     6   int r;
     7   while (~scanf("%d", &r) && r) {
     8     int res = 1;
     9     int ans = r;
    10     int s_r = r * r;
    11     for (int i = 1; i < r; i++) {
    12       ans += int(sqrt(s_r - i * i));
    13     }
    14     res += ans * 4;
    15     printf("%d
    ", res);
    16   }
    17   
    18   return 0;
    19 }
    View Code
  • 相关阅读:
    oracle序列
    json对象操作
    web项目中常出现的异常
    Builder设计模式
    getParameter("name")和 getParamterValues("name")的区别
    多条件查询生成sql语句
    安装pl/sql
    修复google浏览器
    创建JAVA项目的几个选项
    类的初始化顺序
  • 原文地址:https://www.cnblogs.com/gznb/p/11211914.html
Copyright © 2011-2022 走看看