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
  • 相关阅读:
    python高级特性和高阶函数
    代理模式及案例
    我的报错错误记录
    摘抄-编码规范
    测试java的Lambda语法
    测试IDEA将新建项目提交到github上
    js处理科学计数法
    测试java操作运算符
    java根据模板生成,导出word和pdf(aspose.words实现word转换pdf)
    sqlserver日期函数
  • 原文地址:https://www.cnblogs.com/gznb/p/11211914.html
Copyright © 2011-2022 走看看