1 条题解
-
0
C++ :
#include <cstdio> #include <cmath> // 题面写「x^2,y^2,z^2 均 <= R」,但样例 R=10 -> 2 表明实际是 1<=X<=Y<=Z<=R // (R=10 时 (3,4,5) 与 (6,8,10) 两组,与样例一致)。 // u=z-x, v=z+x => u*v=y^2, u<v, u,v 同奇偶; // x=(v-u)/2, z=(u+v)/2, y=sqrt(u*v),要求 1<=x<=y<=z<=R。 int main(){ long long R; if(scanf("%lld",&R)!=1) return 0; long long cnt=0; for(long long u=1; u<=2*R; u++){ for(long long v=u+2; v<=2*R; v+=2){ // u,v 同奇偶: 从 u 走两步 long long z=(u+v)/2; if(z>R) break; if((u%2)!=(v%2)) continue; long long prod=u*v; long long y=(long long)(sqrt((double)prod)+0.5); while(y>0 && y*y>prod) y--; while((y+1)*(y+1)<=prod) y++; if(y*y!=prod) continue; long long x=(v-u)/2; if(x<1) continue; if(x<=y && y<=z) cnt++; } } printf("%lld\n",cnt); return 0; }
- 1
信息
- ID
- 2779
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者