A题
题目大意
就是让算。
分析
太水了,分析个毛线,直接上代码吧。。。
代码
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
long long h;
cin>>h;
cout<<setprecision(9)<<fixed<<sqrt(h*(h+12800000));
return 0;
}
B题
题目大意
给你一个整数,输出。
分析
分正数、负数两种情况:正数直接除以10就好了,负数有余数的话除以10后要再+1。
代码
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
long long x;
cin>>x;
if(x>=0) cout<<x/10;
else
{
if(x%10==0) cout<<x/10;
else cout<<x/10-1;
}
return 0;
}
C题
题目大意
象棋棋盘上有两个马,分别再和,问其中一个能不能两步吃掉另一个。
分析
DFS一下,看看能不能两步走到另一匹马上。
代码
#include <iostream>
using namespace std;
bool flag;
int x1,y1,x2,y2;
int dx[]={-2,-2,-1,1,2,2,1,-1},dy[]={-1,1,2,2,1,-1,-2,-2};
void dfs(int x,int y,int t)
{
if(t==2&&x==x2&&y==y2) flag=true;
if(t==2) return;
for(int i=0;i<8;i++)
{
dfs(x+dx[i],y+dy[i],t+1);
}
}
int main()
{
cin>>x1>>y1>>x2>>y2;
dfs(x1,y1,0);
if(flag) cout<<"Yes";
else cout<<"No";
return 0;
}
D题
题目大意
有一个游戏,Takahashi选择在A~B之间的一个整数,Aoki选择在C~D之间的一个整数,两个数相加,结果是质数就Aoki赢,否则 Takahashi赢。两人都按策略玩,谁会赢?
分析
数据量不大,直接两重循环暴力全部情况。
代码
#include <iostream>
using namespace std;
bool check(int x)
{
for(int i=2;i*i<=x;i++)
{
if(x%i==0) return false;
}
return true;
}
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
for(int i=a;i<=b;i++)
{
bool flag=true;
for(int j=c;j<=d;j++)
{
if(check(i+j)) flag=false;
}
if(flag)
{
cout<<"Takahashi";
return 0;
}
}
cout<<"Aoki";
return 0;
}