欢乐赛48题解
2025-06-04 18:56:14
发布于:浙江
本帖只有四题,因为后边两道不会不想写了。
T1
个人难度:红的不能再红。
其实就是让我们判断是否小于等于9且大于等于2。在此不多做解释。
代码:
#include<iostream>
using namespace std;
int main(){
int a;
cin >> a;
if(a>=2 and a<=9){
cout << "YES";
return 0;
}cout <<"NO";
return 0;
}
时间复杂度分析:
没啥可讲的。
T2
个人难度:红
直接根据题意进行模拟即可。
代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int a[1000054]={},b[1000025]={};
for(int i=1;i<=n;i++){
cin >> a[i];
}for(int i=1;i<=n;i++){
cin >> b[i];
}
for(int i=1;i<=n;i++){
cout << a[i]+b[n-i+1]<<" ";
}
return 0;
}
时间复杂度分析:
首先我们用了的复杂度来读取输入,还用了的复杂度进行构造并输出。所以复杂度为。
T3
个人难度:红
根据题意。已知每种花色都只能那一张。那么我们只需记录一下四种花色共出现了几种,在输出即可。
代码:
#include <bits/stdc++.h>
using namespace std;
int a,b,c,d;
int main(){
for(int i=1;i<=5;i++){
char n;
cin >> n;
switch(n){
case 'a':
a=1;
break;
case 'b':
b=1;
break;
case 'c':
c=1;
break;
case 'd':
d=1;
break;
}
}cout << a+b+c+d;
return 0;
}
时间复杂度分析:
%%%,没啥好讲的就是。因为给的就是长度为五的字符串。
T4
个人难度:红,上位
就是让我们求一个数有多少个质因数。那么我们可以先把这个数里面所有的质数先筛一遍。之后再判断是否是其因数即可。这里用的是埃氏筛。大佬的话可以用欧拉筛哈。
代码:
#include <bits/stdc++.h>
using namespace std;
#define long long int;
const int _MAX=1e7;
int sz[_MAX];
void Eratosthenes(int a){
sz[1]=1;
for(int i=1;i*i<=a;i++){
if(sz[i]==0){
for(int j=2*i;j<=a;j+=i){
sz[j]=1;
}
}
}
}
int main(){
int a;
cin >> a;
int n=0;
Eratosthenes(a);
for(int i=1;i<=a;i++){
if(sz[i]==0 and a%i==0){
n++;
}
}cout << n;
return 0;
}
时间复杂度分析:
本题中使用了复杂度为复杂度的埃氏筛。加上(这里其实可以优化)的线性搜索。所以时间复杂度为;如果使用欧拉筛的话复杂度为
附:
ACOI所有的出题人(可以直接点的,更方便):
链接描述
链接描述
链接描述
链接描述
链接描述
链接描述
链接描述
链接描述
链接描述
链接描述
链接描述
这里空空如也
有帮助,赞一个