T1:吃西瓜
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int w;
cin>>w;
if((w-2)%2==0&&w!=0&&w!=2){
cout<<"YES";
}else{
cout<<"NO";
}
return 0;
}
思路:从判断奇数偶数入手,偶数不能是2。
考察点:if判断,从不同的角度考虑问题。
T2:加或减
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,a,b,c,w[10001]={0};
cin>>t;
for(int i=0;i<t;i++){
cin>>a>>b>>c;
if(a+b==c){
w[i]++;
}
}
for(int i=0;i<t;i++){
if(w[i]==1){
cout<<"+"<<endl;
}else{
cout<<"-"<<endl;
}
}
return 0;
}
思路:收集数据后判断加减,用数组0,1表示,集中输出。
考察点:endl用法,收入数据后统一输出。
T3买小猫小狗
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,a,b,sum=0;
cin>>x>>a>>b;
for(int i=1;i<=x/a;i++){
for(int j=1;j<=x/b;j++){
if(x==a*i+b*j){
sum++;
}
}
}
cout<<sum;
return 0;
}
思路:考虑所有情况,使用双重for循环。
考察点:双重for循环,解决鸡兔同笼问题。
T4字符串连接
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int q[130]={};
string s1,s2;
cin>>s1>>s2;
s1=s1+s2;
for(int i=0;i<s1.length();i++){
if(q[s1[i]]==0){
cout<<s1[i];
q[s1[i]]=1;
}
}
return 0;
}
思路:使用string数组,把两个数组变成一个数组,添加一个int数组,字母重复为1,不重复为0。
考察点:桶排序的代码和应用。
T5优秀的奖励
代码:
#include<bits/stdc++.h>
using namespace std;
struct stu{
int chinese,maths,english,number,sum;
};
stu p[310];
bool cmp(stu a,stu b){
if(a.sum==b.sum){
if(a.chinese==b.chinese){
return a.number<b.number;
}else{
return a.chinese>b.chinese;
}
}
return a.sum>b.sum;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>p[i].chinese>>p[i].maths>>p[i].english;
p[i].sum=p[i].chinese+p[i].english+p[i].maths;
p[i].number=i;
}
sort(p+1,p+1+n,cmp);
for(int i=1;i<=5;i++){
cout<<p[i].number<<" "<<p[i].sum<<endl;
}
}
思路:先使用struct数组收集数据,之后用cmp判断,最后用sort排序排序数组,最后用for循环输出。
考察点:struct函数的代码和应用,分类处理信息的能力,sort分类的代码和应用。
T6不太甜的糖果
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,s[230001],ans=230001,sum=0;
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>s[i];
}
for(int l=1;l<=n;l++){
for(int r=1;r<=n;r++){
for(int i=l;i<=r;i++){
sum=s[i]+sum;
}
if(sum>=m){
if(r-l+1<ans){
ans=r-l+1;
}
}
sum=0;
}
}
cout<<ans;
return 0;
}
代码不是正解!
思路:先输入数组,用二分法确定最短数组,前缀判断,正确的和ans比较,判断最小的数组。
考察点:二分查找的代码和应用,搜索的使用,前缀的代码和使用。