比赛地址
A - 走路还是坐公交
#include
#include
#include
#define LEN 100000
int Min(int a,int b)
{
return a<b?a:b;
}
int main()
{
int N,K;
while(scanf("%d%d",&N,&K)!=EOF)
{
int cost[LEN+5],i;
cost[N]=0;
if(N>K)
{
printf("%d\n",N-K);
continue;
}
for(i=N-1;i>=0;i--)
{
cost[i]=cost[i+1]+1;
}
for(i=N+1;i<=K;i++)
{
if(i%2!=0)
{
int tmp=Min(cost[(i-1)/2]+2,cost[(i+1)/2]+2);
cost[i]=Min(cost[i-1]+1,tmp);
}
else
{
cost[i]=Min(cost[i-1]+1,cost[i/2]+1);
}
}
printf("%d\n",cost[K]);
}
return 0;
}
B - 非素数个数
#include
#include
using namespace std;
const int maxn=10000010;
int prime[maxn],pnum;
bool p[maxn]= {0};
void get_Prime()
{
for(int i=2; i<maxn; i++)
{
if(!p[i])
{
prime[pnum++]=i;
for(int j=2*i; j<maxn; j+=i)
{
p[j]=1;
}
}
}
}
int main()
{
int a,b;
get_Prime();
while(cin>>a>>b)
{
int ans=0;
for(int i=a;i<=b;i++){
if(p[i]==1){
ans++;
}
}
cout<<ans<<endl;
}
return 0;
}
C - 求众数
#include
#include
using namespace std;
map<int,int> mp;
typedef map<int,int>::iterator It;
int main()
{
int n,x;
cin>>n;
for(int i=0; i<n; i++)
{
cin>>x;
mp[x]++;
}
int ans=0,max=0;
for(It it=mp.begin(); it!=mp.end(); it++)
{
if(it->second>max)
{
max=it->second;
ans=it->first;
}
}
cout<<ans<<endl;
return 0;
}
D - a与b得到c
#include
using namespace std;
bool is_getC(int a,int b,int c){
if(a+b==c||a-b==c||(double)a/(double)b==(double)c||a*b==c
||b-a==c||(double)b/(double)a==(double)c){
return true;
}
return false;
}
int main()
{
int a,b,c;
cin>>a>>b>>c;
puts(is_getC(a, b, c) ? "YES" : "NO");
return 0;
}
E - 西交-最近的两个点
#include
using namespace std;
struct point{
int x,y;
}p[8];
int main()
{
int x1,y1,x2,y2,min=1e9+10;
for(int i=0;i<8;i++){
cin>>p[i].x>>p[i].y;
}
for(int i=0;i<8;i++){
for(int j=i+1;j<8;j++){
int dis=(p[j].x-p[i].x)*(p[j].x-p[i].x)+((p[j].y-p[i].y)*(p[j].y-p[i].y));
if(dis<min){
min=dis;
x1=p[i].x,y1=p[i].y,x2=p[j].x,y2=p[j].y;
}
}
}
cout<<x1<<' '<<y1<<endl<<x2<<' '<<y2<<endl;
return 0;
}
F - 字符串的差
#include
#include
using namespace std;
void get_erase(string a,string b){
map<char,int> mp;
for(int i=0;i<b.size();i++){
mp[b[i]]=1;
}
for(int i=0;i<a.size();i++){
if(!mp[a[i]])
cout<<a[i];
}
}
int main()
{
string a,b;
cin>>a>>b;
get_erase(a,b);
return 0;
}
G - 天津大学-进制转换
#include
using namespace std;
int main(){
int n;
cin>>n;
printf("%o",n);
return 0;
}
H - 天津大学-畅通工程
#include
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m){
if(n==0) break;
for(int i=0;i<m;i++){
int x,y;
cin>>x>>y;
}
if(n-1-m>0)
cout<<n-1-m<<endl;
else
cout<<0<<endl;
}
return 0;
}