[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.