决赛共有五题,难度不大。但比赛时时间较为紧张,第4题未完成。这些均为楼主自己写的代码,测试样例可以通过,但不一定能AC,仅供参考
第一题:
简单模拟
#include<bits/stdc++.h>using namespace std;bool judge(string s){if(s.size()<2)return true;int p=0;int q=s.size()-1;while(p<q){if(s[p]!=s[q])return false;p++;q--;}return true;}int main(){int L,R,k;cin>>L>>R>>k;//回文 模k要余2int count=0;for(int i=L;i<=R;i++){if(judge(to_string(i))){if(i%k==2)count++;}}cout<<count;}
第二题:
暴力解法
#include<bits/stdc++.h>using namespace std;long long int p(long long int i,long long int j){return i+j;}long long int m(long long int i,long long int j){return i-j;}long long int mul(long long int i,long long int j){return i*j;}long long int chu(long long int i,long long int j){return i*1.0/j;}int main(){long long int a,b,c,d;cin>>a>>b>>c>>d;set<double>Set;Set.insert(p(a,b)+p(c,d));Set.insert(m(a,b)+p(c,d));Set.insert(mul(a,b)+p(c,d));Set.insert(chu(a,b)+p(c,d));Set.insert(p(a,b)+m(c,d));Set.insert(m(a,b)+m(c,d));Set.insert(mul(a,b)+m(c,d));Set.insert(chu(a,b)+m(c,d));Set.insert(p(a,b)+mul(c,d));Set.insert(m(a,b)+mul(c,d));Set.insert(mul(a,b)+mul(c,d));Set.insert(chu(a,b)+mul(c,d));Set.insert(p(a,b)+chu(c,d));Set.insert(m(a,b)+chu(c,d));Set.insert(mul(a,b)+chu(c,d));Set.insert(chu(a,b)+chu(c,d));cout<<Set.size()<<endl;}
第三题:
#include<bits/stdc++.h>using namespace std;int main(){long long int L,N,M;//m表示柱子 cin>>L>>N>>M;vector<int>vec;for(int i=0;i<N;i++){int x;cin>>x;vec.push_back(x);}vector<int>arr;arr.push_back(vec[0]);arr.push_back(L-vec[N-1]);for(int i=0;i<N-1;i++){int x;x=vec[i+1]-vec[i];arr.push_back(x);}sort(arr.begin(),arr.end());for(int i=0;i<M;i++){arr[N]-=arr[N-1];sort(arr.begin(),arr.end());}cout<<arr[N]<<endl;//for(int i=0;i<arr.size();i++)//cout<<arr[i]<<endl; }
第五题:
简单模拟
#include<bits/stdc++.h>using namespace std;//3 6 3 3 5 1 4 1 3 4 5int fun(int a[],int sum,int l,int k,int f){int total=0;for(int i=1;i<=l;i++){if(a[i]==1){k=i;total+=i;}}total+=l;if(sum>total)return f;a[k]=0;fun(a,sum,l,k,f+1);} int main(){int n,l,v;cin>>n>>l>>v;//3 6 3int a[l+1];memset(a,0,sizeof(a));for(int i=0;i<n;i++){int x;cin>>x;a[x]=1;}int q;cin>>q;vector<int>vec;for(int i=0;i<q;i++){int y;cin>>y;vec.push_back(y);}for(int i=0;i<q;i++){if(v*vec[i]<l){cout<<"-1"<<endl;}else {int b[l+1];memset(b,0,sizeof(b));for(int i=0;i<=l;i++){if(a[i]==1)b[i]=1;}cout<<fun(b,v*vec[i],l,0,0)<<endl;}}}