[bzoj1041]圆上的整点

http://blog.csdn.net/creationaugust/article/details/48052329

pascal用起来好心塞。。longint竟然才等于C++的int。。。

 1 uses Math;
 2 
 3 function gcd(a,b:qword): qword;
 4 begin
 5     if b=0 then 
 6         gcd:=a
 7     else 
 8         gcd:=gcd(b,a mod b);
 9 end;
10 
11 function check(a:qword;b:Double): Boolean;
12 var tmp:qword;
13 begin
14     tmp:=floor(b);
15     check:=((floor(b)=b) and (gcd(tmp*tmp,a*a)=1) and (tmp*tmp<>a*a));
16 end;
17 
18 var r,d,a,ans:qword;
19 
20 begin
21     ans:=0;
22     readln(r);
23     d:=1;
24     while d<=floor(sqrt(2*r)) do
25     begin
26         if (2*r) mod d = 0 then
27         begin
28             a:=1;
29             while a<=floor(sqrt((2*r)/(2*d))) do
30             begin
31                 if check(a,sqrt(2*r/d-a*a)) then 
32                     inc(ans);
33                 inc(a);
34             end;
35             if d<>2*r/d then
36             begin
37                 a:=1;
38                 while a<=floor(sqrt(d/2)) do
39                 begin
40                     if check(a,sqrt(d-a*a)) then
41                         inc(ans);
42                     inc(a);
43                 end;
44             end;
45         end;
46         inc(d);
47     end;
48     writeln(ans*4+4);
49 end.
View Code

 

posted @ 2017-01-30 21:26  KingSann  阅读(142)  评论(0)    收藏  举报