Acwing算法周赛

文章目录

  • [5366. 大小写转换](#5366. 大小写转换)
  • [5367. 不合群数](#5367. 不合群数)
  • 思路

5366. 大小写转换

给定一个由大写字母构成的字符串,请你将其中的每个字符都转换为对应小写字母。

输出大小写转换后得到的新字符串。

输入格式

一个由大写字母构成的字符串。

输出格式

输出大小写转换后得到的新字符串。

数据范围

前 3

个测试点满足,输入字符串的长度范围 [1,10]

所有测试点满足,输入字符串的长度范围 [1,100]

输入样例:

ABC

输出样例:

abc

cpp 复制代码
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main(){
    int n;
    cin >> n;
    
    while (n -- ){
        int x;
        scanf("%d", &x);
        
        if (x < 2){
            cout << "No" << endl;
            continue;
        } 
        
        bool is_prime = false;
        for (int i = 2; i <= x / i; i ++){
            if (x % i == 0){
                cout << "No" << endl;
                is_prime = true;
                break;
            }
        }
        if (!is_prime) cout << "Yes" << endl;
    }
    
    return 0;
}

5367. 不合群数

如果一个正整数无法被 [2,a]

范围内的任何整数整除,则称其为不合群数。

请你计算并输出 [2,b]

范围内的最大不合群数。

提示:10

亿内的最大质数是 999999937

,且相邻质数之间的差值均不超过 300

输入格式

共一行,包含两个整数 a,b

输出格式

一个整数,表示 [2,b]

范围内的最大不合群数。

如果 [2,b]

范围内不存在不合群数,则输出 -1。

数据范围

前 3

个测试点满足 2≤a≤b≤10

所有测试点满足 2≤a≤b≤109

输入样例1:

3 6

输出样例1:

5

输入样例2:

3 4

输出样例2:

-1

cpp 复制代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>


using namespace std;


int main(){
    int a, b;
    cin >> a >> b;
    
    
    while(b > a)
    {
        // 枚举 (b - 300, b] 这些数
        bool flag = false;
        for (int j = 2; j <= min(a, b / j); j ++){
            if (b % j == 0){
                flag = true;
                break;
            }
        }
        
        if (!flag && b > a){
            cout << b << endl;
            break;
        }
        b --;
    }
    if (b <= a) cout << -1 << endl;
    
    
    return 0;
}

思路

不合群数定义:不被[2, a]中的任意一个数整除

要找到[2, b]中的不合群数,则不合群数一定在[a + 1, b]这个范围内

提示中提到了质数,[a + 1, b]范围内的质数一定是不合群数

题目要找到最大的不合群数,则从b开始倒着寻找最大的数即可

该数必须要>a才满足条件,否则不存在最大的不合群数

  • 需要注意,质数一定是不合群数,但是不合群数不一定是质数

因为提示中说10亿内的相邻质数之间的差值均不超过 300,所以要找到最大的质数只需要枚举300个数即可

如何判断质数?

  • 试除法

只需要判断到min(a, sqrt(j)) 即可

毕竟枚举a还是可能超时的,max(a) = 1e9

严格按照题目要枚举[2, a]

但是如果这个数是质数,即枚举[2, sqrt(j)],一定是不合群数

补充知识点

试除法判定质数

cpp 复制代码
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main(){
    int n;
    cin >> n;
    
    while (n -- ){
        int x;
        scanf("%d", &x);
        
        if (x < 2){
            cout << "No" << endl;
            continue;
        } 
        
        bool is_prime = false;
        for (int i = 2; i <= x / i; i ++){
            if (x % i == 0){
                cout << "No" << endl;
                is_prime = true;
                break;
            }
        }
        if (!is_prime) cout << "Yes" << endl;
    }
    
    return 0;
}
相关推荐
CoderYanger几秒前
贪心算法:3.最大数
java·算法·leetcode·贪心算法·1024程序员节
lxmyzzs1 分钟前
【图像算法 - 37】人机交互应用:基于 YOLOv12 与 OpenCV 的高精度人脸情绪检测系统实现
算法·yolo·人机交互·情绪识别
muyouking111 分钟前
Zig 语言实战:实现高性能快速排序算法
算法·排序算法
CoderYanger7 分钟前
贪心算法:5.最长递增子序列
java·算法·leetcode·贪心算法·1024程序员节
慕容青峰9 分钟前
【牛客周赛 107】E 题【小苯的刷怪笼】题解
c++·算法·sublime text
算法熔炉14 分钟前
深度学习面试八股文(2)——训练
人工智能·深度学习·算法
EXtreme3522 分钟前
【数据结构】打破线性思维:树形结构与堆在C语言中的完美实现方案
c语言·数据结构·算法··heap·完全二叉树·topk
cici1587424 分钟前
含风电场的十机24时系统机组出力优化算法
人工智能·算法·机器学习
WolfGang00732129 分钟前
代码随想录算法训练营Day45 | 101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
算法·深度优先
2301_7644413330 分钟前
PMC政策文本量化评估
python·算法·信息可视化