B题我是贪心,找到距离每个storage最近的且不是storage的点;
C题因为勾股三角形有一个构造技巧,如果a是奇数,a自身平方,然后除以2,再加减0.5得到的两个数必定能与a构成直角三角形,但是
1.要处理倍数,比如3 4 5与 6 8 10为倍数关系
2.特判4这种情况,代入到3 4 5及倍数里去
ps:为什么感觉我的做法非正确???
scanf("%I64d",&a);
num=1;
if(a%4==0) {
printf("%I64d %I64d\n",3*(a/4),5*(a/4));return 0;
}
while(a%2==0) a/=2,num<<=1;
a=a*a;
b=a/2*num;c=a/2+1;
c*=num;
if(b&&c)
printf("%I64d %I64d\n",b,c);
else printf("-1\n");