ECNU 计科机试2018

2018年计科学硕、计科专硕、计算中心的复试机试题。时长3.5小时

A. 1+1

代码:

#include <iostream>

using namespace std;

int main(){
    int a,b;
    char c;
    cin>>a;
    c=getchar();
    cin>>b;

    int res;
    if(c=='+') cout<<a+b;
    else if(c=='-') cout<<a-b;
    else cout<<a*b;

}


B. LOGO

代码:

#include <iostream>

using namespace std;

void FD(int l){
    if(l==0)
        cout<<"FD 1"<<endl;
    else{
        int k=1;
        for(int i=0;i<l;i++)
            k=k*3;
        cout<<"FD 1/"<<k<<endl;
    }
}

void Func(int n,int l){
    if(n==0) FD(l);
    else{
        Func(n-1,l);
        cout<<"LD 60"<<endl;
        Func(n-1,l);
        cout<<"LD 240"<<endl;
        Func(n-1,l);
        cout<<"LD 60"<<endl;
        Func(n-1,l);
    }
    return;
}

int main(){
    int n;
    cin>>n;
    Func(n,n);
}

C. Easy Sort

代码:

#include <iostream>
#include <algorithm>
using namespace std;

int sign(string x){
    if(x[0]=='-') return 1;
    else return 0;
}

bool compare(string x,string y){
    if(sign(x)==1 && sign(y)==0) return true;
    else if(sign(x)==0 && sign(y)==1) return false;
    else if(sign(x)==0 && sign(y)==0){
        if(x.size()>y.size()) return false;
        else if(x.size()<y.size()) return true;
        else{
            for(int i=0;i<x.size();i++){
                if(x[i]>y[i]) return false;
                else if(x[i]<y[i]) return true;
            }
            return false;
        }
    }
    else{
        if(x.size()>y.size()) return true;
        else if(x.size()<y.size()) return false;
        else{
            for(int i=1;i<x.size();i++){
                if(x[i]>y[i]) return true;
                else if(x[i]<y[i]) return false;
            }
            return true;
        }
    }
}

int main(){
    int n;
    cin>>n;
    string arr[n];
    for(int i=0;i<n;i++)
        cin>>arr[i];

    sort(arr,arr+n, compare);

    for(int i=0;i<n;i++)
        cout<<arr[i]<<" ";
}

D. Boss's Boss

代码:

#include <iostream>
using namespace std;

int main(){
    int n;
    cin>>n;
    int lead[n+1],member[n+1];
    for(int i=1;i<=n;i++)
        cin>>lead[i],member[i]=1;

    for(int i=1;i<=n;i++){
        int k=i;
        while(lead[k]!=0)
            member[lead[k]]++,k=lead[k];
    }

    for(int i=1;i<=n;i++)
        cout<<member[i]<<" ";
}

E. Snake Matrix

代码:

#include <iostream>
using namespace std;

int matrix[20001][20001]={0};

void circle(int pos,int step){
    int i=pos,j=pos;
    matrix[i][j]=matrix[i][j-1]+1;
    for(int k=0;k<step;k++)
        matrix[i][j+1]=matrix[i][j]+1,j++;
    for(int k=0;k<step;k++)
        matrix[i+1][j]=matrix[i][j]+1,i++;
    for(int k=0;k<step;k++)
        matrix[i][j-1]=matrix[i][j]+1,j--;
    for(int k=0;k<step-1;k++)
        matrix[i-1][j]=matrix[i][j]+1,i--;

}

int main(){
    int n;
    cin>>n;
    int pos=1,step=n-1;
    while(step>=0){
        circle(pos,step);
        pos++;
        step-=2;
    }

    for(int i=1;i<=n;i++){
        int sum=0;
        for(int j=1;j<=n;j++)
            sum+=matrix[i][j];
        cout<<sum<<endl;
    }
}

这题数组没办法存到200001那么大,估计没法通过全部测试用例。

注:

文章部分内容转载自https://malic.xyz/archives/40

全部评论

相关推荐

03-15 12:48
门头沟学院 Java
牛牛要早起:这个一般就跟你说有高薪,然后叫你买车,之后血亏
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务