AtcoderABC239场

A - HorizonA - Horizon

AtcoderABC239场_第1张图片

题目大意

题目给出地面高出hh米时,看到的地平线距离为 sqrt(h(12800000+h)米。要求计算地面高出HH米时,看到的地平线距离有多远。

思路分析

直接打印

时间复杂度

O(1)

AC代码

#include
#include
int main(){
	double h;
	scanf("%lf",&h);
	printf("%.6lf\n",sqrt(h*(12800000+h)));
}

B - Integer DivisionB - Integer Division

AtcoderABC239场_第2张图片AtcoderABC239场_第3张图片

题目大意

要求给定一个整数X,输出X除以10的地板除结果。地板除就是取不超过X/10的最大整数。

思路分析

可以使用条件判断来处理不同情况下的X值。如果X大于0,则直接将X除以10得到结果;如果X小于等于0,则需要进一步判断X是否能被10整除。如果能整除,则结果为X除以10;如果不能整除,则结果为X除以10减去1

时间复杂度

O(1)

AC代码

#include
using namespace std;
using ll=long long;
int main()
{
ll x;
cin>>x;
ll res=0;
if(x>0){
res=x/10;}
else{
if(x%10==0){res=x/10;
}else{res=x/10-1;
}
}
cout<<res<<endl;
return 0;
}

C - Knight ForkC - Knight Fork

AtcoderABC239场_第4张图片AtcoderABC239场_第5张图片AtcoderABC239场_第6张图片AtcoderABC239场_第7张图片

题目大意

给定一个二维坐标系上的两个点(x1, y1)和(x2, y2),是否存在一个整数坐标的点,它与(x1, y1)和(x2, y2)之间的距离都是√5。如果存在,输出"Yes",否则输出"No"。

思路分析

画图分析可得,为了找到满足条件的点,可以使用穷举法。遍历以(x1, y1)为中心的4*4的正方形区域内的所有点,计算每个点与(x1, y1)和(x2, y2)之间的距离,并判断是否都等于√5。

时间复杂度

O(1)

AC代码

#include
using namespace std;
using ll=long long;
int dist_sq(int a, int b, int c, int d) {
  return (a - c) * (a - c) + (b - d) * (b - d);
}
int main()
{
ll x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
for(ll x=x1-2;x<=x1+2;x++)
{for(ll y=y1-2;y<=y1+2;y++)
{
if(dist_sq(x, y, x1, y1) == dist_sq(x, y, x2, y2) && dist_sq(x, y, x1, y1) == 5) {cout<<"Yes"<<endl;return 0;
}
}
}cout<<"No"<<endl;
return 0;
}

你可能感兴趣的:(算法)