UPC题解训练4A-F

题解

F

假设每一个点为ai,每个人的蛋糕为x
把每个点ai放在数轴上,不难发现,|ai-x|为x到ai的距离。任取两个值ai,aj,发现x只要是
ai到aj上的任意一个点即可。
答案就是若干对aj-ai求和。

int a[N];
int main() {
    int n;
    cin>>n;
    for(int i = 0;i < n;i++)
        cin>>a[i];
    sort(a,a+n);
    int sum = 0;
    for(int i = 0,j = n-1;i < j;i++,j--){
        sum += a[j]-a[i];
    }
    cout<<sum<<endl;
    return 0;
}

E

纯粹的模拟就行了,记得四舍五入。

priority_queue<int> Q;
int main() {
    int n,m;
    cin>>m>>n;
    int tall[15][15];
    int sum[15] = {0},tmax[15] = {0};
    for(int i = 1;i <= m;i++){
        for(int j = 1;j <= n;j++){
            cin>>tall[i][j];
            sum[i]+=tall[i][j];
            tmax[i] = max(tall[i][j],tmax[i]);
            if(tall[i][j] > 165) Q.push(tall[i][j]);
        }
    }
    for(int i = 1;i <= m;i++)
        cout<<tmax[i]<<endl;
    for(int i = 1;i <= m;i++) {
        cout <<(int) (sum[i] * 1.0 / n +0.5)<< endl;
    }
    while(!Q.empty()){
        cout<<Q.top()<<' ';
        Q.pop();
    }
    return 0;
}

D

枚举就行了

bool is_prime(int x){
    for(int i = 2;i < x;i++){
        if(x%i == 0) return false;
    }
    return true;
}
bool is_sq(int x){
    return x == (int)sqrt(x) * (int)sqrt(x);
}
int main() {
    int a,b;
    cin>>a>>b;
    int cnt = 0;
    bool flag = false;
    for(int i = a; i <= b;i++){
        if(is_prime(i/100) && is_sq(i%100) && i%6 == 0){
            if(flag)cout<<' ';
            flag = true;
            cout<<i;
            cnt++;
        }
    }
    cout<<endl<<cnt<<endl;
    return 0;
}

C

直接上代码把.

int main()
    {
        char str[30];
        int i,count = 0;
        gets(str);
        if(strlen(str) >= 8&&strlen(str) <= 30)
        {
            for(i=0;i<strlen(str);i++)
            {
                if((str[i]>='0'&&str[i]<='9'))
                {
                    count++;
                    continue;
                }
                else
                    cout<<str[i];
            }
        }   
        cout<<"\n"<<count;
    }

B

把后面两个字母,交换到前面

int main() {
    char a[N];
    cin>>a;
    int len = strlen(a);
    int t = len;
    cout<<a<<endl;
    while(t>1){
        t--;
        for(int i = len-1;i >= 2;i--){
            //cout<<a[i-3]<<a[i-2]<<a[i-1]<<a[i]<<endl;
            swap(a[i-1],a[i-2]);
            swap(a[i],a[i-1]);
        }
        cout<<a<<endl;
    }
    return 0;
}

A

int main()
{
    double x,y;
    cin>>x;
    if(x >= 1 && x <= 15)
        y = x*6;
    else if(x > 15&&x <= 100)
        y = 6*15+(x-15)*9;
    cout<<round(y)<<endl;
}
posted @ 2021-01-12 18:04  Paranoid5  阅读(144)  评论(0编辑  收藏  举报