(紀中)1192. 圓圈 (Standard IO)【數學】

時間限制: 1000 ms 空間限制: 131072 KB 具體限制
Goto ProblemSet


題目描述
在一個二維平面上,每個整數點座標處都放了一塊錢,如(1,2)、(1,1)等。現在以(0,0)爲圓心畫一個半徑爲r的圓,問圓內(包括圓圈邊)上一共有多少錢。


輸入
輸入有多組測試數據,每組測試數據一行輸入一個整數r(r<=25000)表示圓的半徑,輸入以0結束,最後的0不需要輸出0。假設答案不超過2,000,000,000

輸出
對於每個輸入輸出錢數。


樣例輸入
2
3
4
0

樣例輸出
13
29
49


數據範圍限制


解題思路
勾股定理,是一個基本的幾何定理,指直角三角形的兩條直角邊的平方和等於斜邊的平方。中國古代稱直角三角形爲勾股形,並且直角邊中較小者爲勾,另一長直角邊爲股,斜邊爲弦,所以稱這個定理爲勾股定理,也有人稱商高定理。
我們將半徑r看成直角三角形的最長邊c(c,那實際上就是要求紅色那條邊的長度(取整),通過枚舉另一條直角邊1 r1(1~r-1),再根據勾股求出就行了。(c2=a2+b2)(c2=a2+b2),下圖爲第一象限的情況,結果要乘4再加上原點即可。
在這裏插入圖片描述


代碼

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int r,t,ans;
int main()
{
	while(scanf("%d",&r))
	{
		if(r==0)
			break;
		t=r;
		ans=1;
		for (int i = 1; i < r; i++) {
    		t+=int(sqrt(r*r - i * i));
     	}
     	ans+=t*4;
     	printf("%d\n",ans);
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章