313 条题解
-
0IGNORE LV 8 @ 2012-10-29 15:49:10
math库的hypot是个好东西~
其计算过程是sqrt(sqr(x)+sqr(y))=sqrt(x*x+y*y),所以不必担心负数。
功能是返回直角三角形中较长边的长度。
调用方式如下:
program xx;
uses math; -
02012-08-23 11:48:53@
原来abs的返回值是整数,被害惨了。。。
-
02012-08-13 14:48:50@
var
n,i,j:longint;
ans,r,x,y:real;
a:array[1..100,1..2]of real;
/////////////////////////////
procedure init;
begin
read(n);
read(r);
for i:=1 to n do
for j:=1 to 2 do
read(a);
ans:=0;
end;
/////////////////////////
procedure js;
begin
for i:=1 to n-1 do
begin
x:=a-a;
y:=a-a;
ans:=sqrt(x*x+y*y)+ans;
end;
x:=a[1,1]-a[n,1];
y:=a[1,2]-a[n,2];
ans:=ans+sqrt(x*x+y*y)+6.28;
end;
////////////////////////
BEGIN
init;
js;
writeln(ans:0:2);
end. -
02012-08-01 09:46:28@
点击这里查看
-
02012-07-22 19:49:33@
大致思路就是算出各点围成的多边形周长在加上一个圆的周长,注意的是单个钉子的处理,还有……π不能用3.14算……会有答案不对……至少取到3.1415的近似值
program p1007;
type rec=record
x,y:real;
end;
var
r,l:real;
i,n:integer;
a:array[1..100] of rec;
begin
l:=0;
readln(n,r);
for i:=1 to n do
read(a[i].x,a[i].y);
if n=1 then writeln(r*6.283:0:2) else
begin
for i:=2 to n do
l:=l+sqrt(sqr(a[i].x-a.x)+sqr(a[i].y-a.y));
l:=l+sqrt(sqr(a[n].x-a[1].x)+sqr(a[n].y-a[1].y));
l:=l+2*r*3.1415;
writeln(l:0:2);
end;
end. -
02012-07-18 10:27:08@
原来众所周知.......k(半径)的类型是实数
题目很简单,画一下图就可以找到规律 -
02010-07-26 21:30:02@
...我竟然使用了余弦定理和三角函数的反函数。。。。。。
-
02010-07-03 17:52:15@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms诶!
-
02010-04-08 20:32:26@
program p1007;
const pi=3.1415926;
var
n,i:integer;
r,ans:real;
x,y:array[1..10000] of real;
begin
ans:=0;
readln(n,r);
for i:=1 to n do
readln(x[i],y[i]);
if (n=1) then begin ans:=2*pi*r end else
begin
for i:=2 to n do
ans:=ans+sqrt(sqr(x[i]-x)+sqr(y[i]-y));
ans:=ans+2*pi*r+sqrt(sqr(x[n]-x[1])+sqr(y[n]-y[1]));
end;writeln(ans:0:2)
end. -
02010-04-01 16:37:02@
直接算出以圆心为定点的多边形周长加圆的周长即可,稍微想一想就明白了、、、
-
02010-03-14 01:24:42@
#include
#include
#include#define Pai 3.14159
#define X 0
#define Y 1using namespace std;
int main()
{
float points[100][2];
float answer = 0,R;
int N;
cin >> N >> R;
for(int i = 0; i < N;i++)
{
cin >> points[i][X] >> points[i][Y];
if(i!=0)
{
answer += (float)sqrt( (points[X]-points[i][X])*(points[X]-points[i][X]) + (points[Y]-points[i][Y])*(points[Y]-points[i][Y]) );
}
}
answer += (float)sqrt( (points[0][X]-points[N-1][X])*(points[0][X]-points[N-1][X]) + (points[0][Y]-points[N-1][Y])*(points[0][Y]-points[N-1][Y]) );
answer+= (float)2*Pai*R;
cout.setf(ios::fixed);
cout -
02010-03-11 13:03:42@
可以简短
program dingzi;
var i,n:integer;
r,s:real;
d1,d2:array[1..100]of real;
begin
readln(n,r);
for i:=1 to n do readln(d1[i],d2[i]);
for i:=2 to n do
s:=s+sqrt((d1[i]-d1)*(d1[i]-d1)+(d2[i]-d2)*(d2[i]-d2));
s:=s+sqrt((d1[n]-d1[1])*(d1[n]-d1[1])+(d2[n]-d2[1])*(d2[n]-d2[1]));
s:=s+2*r*3.1415265358;
writeln(s:0:2);
end. -
02009-11-10 10:25:18@
var i,n:longint;
r:real;
s:extended;
x,y:array[1..100] of real;
begin
readln(n,r);
s:=0;
readln(x[1],y[1]);
for i:=2 to n do
begin
readln(x[i],y[i]);
s:=s+sqrt(sqr(x[i]-x)+sqr(y[i]-y));
end;
s:=s+sqrt(sqr(x[1]-x[n])+sqr(y[1]-y[n]));
s:=s+2*3.141526535897932384626433832795028841971375108*r;
writeln(s:0:2);
end.
............悲剧啊、、求周长求成了面积、、总是不对、、我还记得圆周率50位啊、、、、又贪玩了
-
02009-11-08 18:49:47@
type arr=record
i,j:extended;
end;
var a:array[0..1000] of arr;n,m,i:longint;s:extended;
begin
readln(n,m);
for i:=1 to n do
readln(a[i].i,a[i].j);
s:=0;
a[0]:=a[n];
for i:=1 to n do
s:=s+sqrt(sqr(a[i].i-a.i)+sqr(a[i].j-a.j));
s:=s+2*3.14159*m;
write(s:0:2);
end.
什么是数字格式无效???才过两个点而已~~~~~~~~T.T -
02009-11-08 11:28:40@
π要精确到3.1416
-
02009-11-04 21:40:23@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案错误... ├ 标准行输出
├ 错误行输出├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:83 有效耗时:0ms本来打算刷水题,谁知一开始做题就被阴了...
第三个数据是只有一个钉子,也就是仅输出钉子的周长,预处理没做好的话就会在这里卡死 -
02009-11-04 21:21:07@
改了两次,过了……数据好像挺弱……
var
a:array[1..100,1..2]of real;
i,k,n:longint;
r,num:real;
begin
readln(n,r);
for i:=1 to n do
readln(a,a);
for i:=2 to n do
num:=num+sqrt(sqr(a-a)+sqr(a-a));
num:=num+sqrt(sqr(a[n,1]-a[1,1])+sqr(a[n,2]-a[1,2]));
num:=num+2*3.1415926*r;
writeln(num:0:2);
end. -
02009-11-04 13:29:13@
谁过了第三个点?
LOOK:编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案错误... ├ 标准行输出 18.8
├ 错误行输出 36.8├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms -
02009-11-03 21:56:34@
Program P1007;
Var
ans:real;
i,n:longint;
a,b,aa,bb,r,sa,sb:real;
begin
readln(n,r);
for i:=1 to n do
begin
readln(a,b);
if i1 then
ans:=ans+sqrt(sqr(a-aa)+sqr(b-bb))
else
begin sa:=a;sb:=b;end;
aa:=a;bb:=b;
end;
ans:=ans+sqrt(sqr(sa-a)+sqr(sb-b));
ans:=ans+2*3.1415926*r;
writeln(ans:0:3);
end. -
02009-11-02 11:25:49@
我火星了,居然真的拿三角函数去算。。