题目都是基础题。
T1 符合条件的数【暴力】
https://www.luogu.com.cn/problem/T211364?contestId=56279
暴力即可。
#include<bits/stdc++.h>
using namespace std;
int n,k;
bool check(int n)
{
int cnt=0;
while(n)
{
if(n%10==3) cnt++;
n/=10;
}
return cnt==k;
}
int main(void)
{
cin>>n>>k;
for(int i=n;;i++)
{
if(check(i))
{
cout<<i;
break;
}
}
return 0;
}
T2 选代表【模拟】
https://www.luogu.com.cn/problem/T211368?contestId=56279
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int cnt[N],n,x;
int main(void)
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>x;
if(!cnt[x]) cout<<x<<" ";
cnt[x]++;
}
return 0;
}
T3 成绩统计 【排序】
https://www.luogu.com.cn/problem/T211372?contestId=56279
注意向上取整,注意四舍五入即可。
#include<bits/stdc++.h>
using namespace std;
struct node
{
string name;
int id,a,b;
int sum;
}temp;
vector<node>ve;
int n;
bool cmp(node a,node b)
{
if(a.sum==b.sum)
return a.id<b.id;
return a.sum>b.sum;
}
int main(void)
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>temp.name>>temp.a>>temp.b;
temp.id=i;
temp.b=ceil(sqrt(1.0*temp.b)*10);
temp.sum=0.6*temp.b+0.4*temp.a+0.5;
ve.push_back(temp);
}
sort(ve.begin(),ve.end(),cmp);
for(int i=0;i<ve.size();i++)
{
cout<<ve[i].name<<" "<<ve[i].sum;
if(i!=ve.size()-1) cout<<endl;
}
return 0;
}
T4 背答案 【模拟】
https://www.luogu.com.cn/problem/T211939?contestId=56279
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
unordered_map<string,int>mp;
string a[N],b[N];
int n,m;
int main(void)
{
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i]>>b[i],mp[a[i]]=i;
for(int i=0;i<m;i++)
{
string name,temp; cin>>name;
int ans=0;
for(int j=0;j<4;j++)
{
cin>>temp;
if(temp==b[mp[name]]) ans=j;
}
cout<<char('A'+ans)<<endl;
}
return 0;
}
T5 击鼓传花 【暴力模拟】
https://www.luogu.com.cn/problem/T211943?contestId=56279
暴力模拟,注意剪枝即可。
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int st[N],n,m,k;
int main(void)
{
cin>>n>>m>>k;
for(int i=0;i<m;i++)
{
int x; cin>>x;
while(!st[x])
{
st[x]=1;
x=(x+k)%n;
}
}
int cnt=0;
for(int i=0;i<n;i++) if(!st[i]) cnt++;
cout<<cnt<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n,m,k;
int gcd(int a,int b) {
return b?gcd(b,a%b):a;}
int main()
{
cin>>n>>m>>k;
int l=gcd(n,k);
vector<bool>v(l,true);
for(int i=0;i<m;i++)
{
int j;cin>>j;
v[j%l]=false;
}
cout<<(count(v.begin(),v.end(),true))*(n/l);
}