電子科技大學實驗中學PK賽(二)比賽題解

比賽地址:http://qscoj.cn/contest/27/c++

A題 FIFA強化數組

分析:這個題目要求說的比較明顯,用幾個if判斷一下就行了。不要一判斷完就輸出,最好用一個ans儲存下答案。輸出答案時,注意爲0時輸出0,不爲0時得先輸出「+」再輸出該等級。spa

標程:code

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c,k;
    cin>>a>>b>>k;
    if (a*b==0) c=a+b;
    else c=max(a,b)+1;
    if (k==-1) c=0;
    if (c) cout<<"+"<<c<<endl;
    else cout<<0<<endl;
    return 0;
}

B題 新雞兔同籠blog

分析:雞有a只腳,兔子有b只腳;雞和兔的頭的和爲x,雞和兔的腳之和爲y。所以,咱們能夠列個方程,設轉基因雞的數量爲c,轉基因兔的數量爲r,c+r=x;c*a+r*b=y;能夠解得r=(y-a*x)/(b-a),c=x-r;但這樣計算的話r,c可能自己不是整數,在除法取整運算中會產生偏差,因此得帶進去檢驗是否正確,另外r,c得是非負整數。兩步檢驗後若是確認是合理解就輸出,不然輸出-1.排序

標程:內存

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long a,b,x,y,c,r;
    bool flag;
    cin>>a>>b>>x>>y;flag=true;
    r=(y-a*x)/(b-a);c=x-r;
    if (r<0 || c<0) flag=false;
    else if (a*c+b*r!=y) flag=false;
    if (flag) cout<<c<<" "<<r<<endl;
    else cout<<-1<<endl;
    return 0;
}

C題 成績排序ci

分析:N最大爲10000000,直接用結構體存會爆內存。咱們經過觀察發現,a,b,c的大小都只有100,因此只有101*101*101種可能,因而就能夠開一個數組來儲存每種狀況的數量。而後再從依次按照總分高、語文高、數學高的順序把這些數給輸出來就行。數學

#include<bits/stdc++.h>
using namespace std;
int s[110][110][110];
int main()
{
    int n,i,j,k,l,r,a,b,c;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        scanf("%d%d%d",&a,&b,&c);
        s[a][b][c]++;
    }
    for(i=300;i>=0;i--)
        for(j=100;j>=0;j--)
            for(k=100;k>=0;k--)
            {
                l=i-j-k;
                if (l>=0 && l<=100)
                {
                    for(r=1;r<=s[j][k][l];r++)
                        printf("%d %d %d\n",j,k,l);
                }
            }
    return 0;
}
相關文章
相關標籤/搜索