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