2021计算机考研机试冲刺模拟卷 六

比赛地址
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;
}

你可能感兴趣的:(N诺·)