算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)

news2024/11/25 21:45:05

算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)


文章目录

  • 算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)
  • 前言
      • 为什么突然想学算法了?
      • 为什么选择码蹄集作为刷题软件?
  • 目录
    • 1. MT2271 完全立方数3
    • 2. MT2272 质数率
    • 3. MT2273 元素共鸣
    • 4. MT2274 第k小素数
    • 5. MT2275 小码哥喜欢的数
    • 结语


前言

在这里插入图片描述

为什么突然想学算法了?

> 用较为“官方”的语言讲,是因为算法对计算机科学的所有分支都非常重要。 在绝大多数的计算机科学分支领域中,要想完成任何实质性的工作,理解算法的基础知识并掌握与算法密切相关的数据结构知识是必不可少的。
> 但从实际而言,是因为当下快到了考研和找工作的年纪(ಥ_ಥ),无论走哪一条路,都不免需要一些相对丰富的算法知识,是故,便产生了一个暑假速成算法的计划,可能对于像我这种算法竞赛小白而言,几乎很难,但我仍然还是想尝试一下,毕竟,梦想还是要有的,万一实现了呢?~( ̄▽ ̄~)~

在这里插入图片描述


为什么选择码蹄集作为刷题软件?

码蹄集,是在全国高等学校计算机教学与产业实践资源建设专家委员会(TIPCC) 指导下建设的,其依托全国各大名校计算机系和清华大学出版社等单位的强大资源,旨在为计算机学习爱好者提供全面和权威的计算机习题。
在这里插入图片描述


目录

1. MT2271 完全立方数3

(1)题目描述
给定n,求不大于n的所有素数的立方和。

格式

输入格式: 一个整数n 。
.
输出格式: 一个数表示答案。

样例1

输入: 3
.
输出: 8

备注:

其中: n≤100000。

(2)参考代码

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

bool isprime(int x){
    for(int i=2;i*i<=x;i++){
        if(x%i==0)  return false;
    }
    return true;
}

int main()
{
    int n;
    cin >> n;
    long long ans = 0;
    for(int i=2;i<=n;i++){
        if(isprime(i)){
            ans += (long long)(i)*i*i;
        }
    }
    printf("%lld\n",ans);

    return 0;
}


2. MT2272 质数率

(1)题目描述

请你求出[1,n]范围内质数占比率。

格式

输入格式: 只有一行,一个整数n,含义如题目描述。
.
输出格式: 输出[1, n]范围内质数占比,保留3位小数。

样例1

输入: 10
.
输出: 0.400

备注:

保证:对于100%的数据:0≤n≤108。

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;

int prime[100000000],cnt,n;
bool vis[100000000];

void init(){
    for(int i=2;i<=n;++i){
        if(!vis[i]) prime[++cnt]=i;
        for(int j=1;j<=cnt;++j){
            if(prime[j]*i>n) break;
            vis[prime[j]*i]=true;
            if(i%prime[j]==0) break;
        }
    }
}
int main( )
{
    cin>>n;
    init();
    cout<<fixed<<setprecision(3)<<(1.0*cnt/n);
    return 0;
}

3. MT2273 元素共鸣

(1)题目描述
遥远的大陆上存在着元素共鸣的机制。

建立一个一维坐标系,其中只有素数对应的点的坐标存在着元素力,而相距为k的两个元素力之间能形成元素共鸣。现在,需要求出n范围内所有能元素共鸣的点对,并将他们以第一个点的坐标大小为关键字排序后输出(小的在前)


格式

输入格式: 一行两个整数n, k
.
输出格式: 所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty

样例1

输入格式: 6924 809
.
输出格式: 2 811

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
#define endl "\n"
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int ,int>pii;
const int inf32 = 0x3f3f3f3f;
const ll inf64 = 0x3f3f3f3f3f3f3f3f;

void read(__int128_t &num){
    int f=1;
    num=0;
    char c = getchar();
    while(c<'0' || c>'9'){
        if(c=='-') f=-1;
        c = getchar();
    }
    while(c>='0' && c<='9'){
        num = num*10 + (c-'0');
        c=getchar();
    }
    num*=f;
}

void write(__int128_t num){
    if(num<0) putchar('-'),num=-num;
    if(num>9) write(num/10);
    putchar(num%10+'0');
}

const int N = 100000;
bool vis[N+1];
vector<int> primes;
void get_primes(){
    for(int i=2;i<=N;++i){
        if(!vis[i]) primes.emplace_back(i);
        for(int j=0;primes[j] <=N/i;++j){
            vis[primes[j]*i]=true;
            if(!(i%primes[j])) break;
        }
    }
}

void solve(){
    int n,k;
    cin>>n>>k;
    get_primes();
    bool sec = true;
    for(int i=2;i<=n;++i){
        if(!vis[i]){
            if(!vis[i+k]&&i+k<=n){
                sec = false;
                cout<<i<<' '<<i+k<<endl;
            }
        }
    }
    if(sec) cout<<"empty"<<endl;
}
int main( )
{
    solve();
    return 0;
}

4. MT2274 第k小素数

(1)题目描述
已知,自然数范围内,最小的素数是2。现在给定一个正整数k,请问第k 小的素数是多少?请编写函数IsPrime来求解第k小的素数,传入参数k,最后返回第k 小的素数。

提示:由于k会比较大,单纯的使用O(n√n)算法会超时,建议在IsPrime函数中完成素数的线性筛,然后直接返回第k小的素数。


格式

输入格式: 第一行一个整数k(1≤k ≤3000000)。
.
输出格式: 输出第k小的素数。

样例1:

输入: 1
.
输出:2

备注:

1≤k ≤3000000(提示:k取最大时,数组开到50,000,000)。

(2)参考代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxn 50000000
#define false 0
#define true 2
int notprim[maxn];
int prim[maxn];
void init() {
    memset(notprim, false, sizeof(notprim));
    int cnt = 0;
    for (int i = 2; i <= maxn; i++) {
        if (!notprim[i]) prim[cnt++] = i;        //如果是素数直接赋值
        for (int j = 0; j < cnt && i * prim[j] <= maxn; j++) { //如果是合数,将前面所有的素数乘当前i筛去
            notprim[i * prim[j]] = true;
            if (i % prim[j] == 0)    //关键处:如果当前合数中出现前面已经出现的素数就跳出
                break;
        }
    }
}
int main() {
    int k;
    scanf("%d", &k);
    init();
    
    printf("%d", prim[k-1]);
    return 0;
}
/*
简化版的线性筛
*/


5. MT2275 小码哥喜欢的数

(1)题目描述
小码哥不喜欢以下情况的数:
1.是7的倍数(包括7) ;
⒉数字的某一位是7,这种数字的倍数,小码哥也不喜欢。

小码哥会给你t个数,如果这个数是他喜欢的数,那么告诉他下一个他喜欢的数是多少(即大于这个数的下一个他喜欢的数)。如果这个数他不喜欢,那你要告诉他。


格式

输入格式:
第1行,一个正整数T表示小码哥给你的数。
接下来T行,每行1个整数a ,表示这一次小码哥给的数。
.
输出格式:
输出共T行,每行一个整数。如果这个数是他喜欢的数,那么告诉他下一个他喜欢的数是多少(即大于这个数的下一个他喜欢的数);如果这个数他不喜欢,那你要输出-1 ;注:定义0不为小码哥喜欢的数。

样例1

输入格式: 2 3
.
输出格式: 6

备注:

其中: 1≤m ≤le8,1 ≤n ≤1e10

(2)参考代码

#include<bits/stdc++.h> 
/*
思路:不越狱的状态好计算所以:越狱数=总的状态数-不越狱的状态数
其中 总的状态数为:m^n
    不越狱的状态数: m*(m-1)^(n-1) :只有第一个可以选择m个宗教,其他的只能选和前一个不同的宗教所以是m-1种情况
这里计算用了快速幂的方法。
*/
using namespace std;
long long p=1007;
long long qpow(long long x, long long y){
    if(y==0)
        return 1;
    if(y%2==1){
        return qpow(x, y - 1) * x % p;
    }else{
        long long t = qpow(x, y/2) % p;
        return t*t % p;
    }
}
int main( )
{
    long long m,n;
    cin>>m>>n;
    long long ans = qpow(m,n)-(m*qpow(m-1,n-1)%p);
    cout<<(ans+p)%p<<endl;//注意需要+p之后再取 %p,防止有负数
    return 0;
}

结语

感谢大家一直以来的不断支持与鼓励,码题集题库中的进阶塔350题正在逐步更新,之后会逐步跟进星耀,王者的题,尽请期待!!!
同时,也希望这些题能帮助到大家,一起进步,祝愿每一个算法道路上的“苦行僧”们,都能够历经磨难,终成正果,既然选择了这条路,走到了这里,中途放弃,岂不是太过可惜?

另附中国计算机学会的杰出会员、常务理事轩哥博士的B站视频讲解链接https://space.bilibili.com/518554541/?spm_id_from=333.999.0.0,供大家更好的进行学习与刷题~( ̄▽ ̄~)~

愿你的结局,配得上你一路的颠沛流离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/52844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何修复 Windows 11/10上的 0x8007023e Windows 更新错误

修复 0x8007023e 错误 运行 Windows Update 疑难解答重置 Windows Update 组件使用 DISM 工具修复 Windows Update 客户端从 Microsoft update Catalog 网站下载并安装更新运行 Microsoft 支持和恢复助手系统更新根据 Windows 质量更新服务节奏发布到 Windows 设备。如果当您尝…

zookeeper学习(一)zk特性与节点数据类型详解(2022)

Zookeeper是一个开源的分布式协调框架&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。从设计模式角度来理解其实zk是一个基于观察者模式设计的分布式服务管理框架。 CAP理论&#xff1a; cap理论指出对于一个分布式计算系统来说&#xff0c;不可能同时满足以下三…

COMSOL泰森多边形Voronoi图多孔骨架优化模型受力分析

Voronoi模型 在comsol内建立泰森多边形骨架支撑网格&#xff0c;模型采用一般的多边形泰森多边形孔隙以及样条曲边泰森多边形孔隙做对比研究&#xff0c;分析模型在承受压力荷载下的应力分布。通过comsol的固体力学计算可看出拟圆形Voronoi孔隙支撑结构的应力分布更为合理&…

【LIMU-Bert论文阅读】

LIMU-BERT: Unleashing the Potential of Unlabeled Data for IMU Sensing Applications 题目重点&#xff1a; 充分利用无标签数据适用于IMU传感器应用&#xff08;并没有指出specfic task&#xff09; 文章核心&#xff1a; 如何根据IMU数据的特征设计出LIMU-Bert&#xff0c…

基于模糊逼近系统不确项的滑模自适应控制

目录 前言 1.系统描述 2.控制器设计 3.模糊推理估计不确定f 3.1构造模糊系统 3.2模糊推理过程 3.3 自适应律设计 4.仿真分析 4.1仿真模型 4.2仿真结果 5.总结 前言 在一般的建模仿真中&#xff0c;我们假设模型都是可以用数学模型描述出来的是确定的&#xff0c;称…

1. 一些截图方法的比较;2. 将截图直接转换为PDF并拼接,与插入Word后再转换为PDF的对比

1. 一些截图方法的比较 1.1. 有时候当某个软件没有导出功能&#xff0c;或者导出功能受限&#xff0c;比如 tableau public&#xff0c;但又需要获取展示出的可视化信息时&#xff0c;就需要用到截图。如果这些截图还要用在正式文档中&#xff0c;就需要是高清的&#xff0c;至…

Python预测卡塔尔世界杯身价最高的英格兰要夺冠?!

文章目录&#x1f3f3;️‍&#x1f308; 1. 数据&#x1f3f3;️‍&#x1f308; 2. 绘图2.1 绘制表头2.2 绘制排名、球队以及国旗2.3 绘制身价柱状图2.4 绘制FIFA排名散点图2.5 设置背景2.6 设置标题&#x1f3f3;️‍&#x1f308; 3. 更多可视化项目源码数据&#xff1a;大…

关于 find 命令的15个超级有用的例子

find 命令用于在 Linux 命令行中搜索文件和目录。 find 是功能最强大、使用最频繁的命令之一&#xff0c;同时也是选项最多的命令之一&#xff0c;它有50多个选项&#xff0c;很容易让人弄混了&#xff0c;特别是当它与 exec 或 xargs 命令一起使用的时候。 作为系统管理员或…

AI创作教程之 如何在本地 PC 上运行稳定的 Diffusion 2.0 (无代码指南)

AI 的热门图像生成器 Stable Diffusion日前发布了全新的 2.0版本。新版本比以前的版本带来了许多进步和改进。OpenCLIP 中新的深度检测和更好的文本到图像模型是我最兴奋的功能。 查看本文以查看 SD 2.0 中新增功能的完整列表。 在本文中,我将向您展示如何在本地 PC 上试用新…

PHP基于thinkphp的在线教学网站#毕业设计

在线教学系统采用B/S模式&#xff0c;促进了在线教学系统的安全、快捷、高效的发展。传统的管理模式还处于手工处理阶段&#xff0c;管理效率极低&#xff0c;随着用户的不断增多&#xff0c;传统基于手工管理模式已经无法满足当前用户需求&#xff0c;随着信息化时代的到来&am…

DataFrame API入门操作及代码展示

文章目录DataFrame风格编程DSL风格编程代码示例相关API相关代码示例SQL风格编程代码示例相关API相关代码Fucntions包基于SparkSQL的WordCount代码编写DataFrame风格编程 DataFrame支持两种风格进行编程 DSL风格SQL风格 DSL称之为领域特定语言&#xff0c;其实就是指DataFrame特…

Config配置文件读写

配置文件本质上是包含成功操作程序所需信息的文件&#xff0c;这些信息以特定方式构成。它们不是在程序中进行硬编码&#xff0c;而是用户可配置的&#xff0c;通常存储在纯文本文件中。 写配置文件 使用函数WritePrivateProfileStringW写配置文件 BOOL WritePrivateProfile…

filter: grayscale(1); | 网页变灰

效果 MDN: https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter-function/grayscalegrayscale(amount)对图片进行灰度转换转换值的大小&#xff0c;可以是 或 . 当值为 100% 时&#xff0c;灰度最大。0% 时与原图没有区别。0% 到 100% 之间的值会使灰度线性变化。amount …

JVM学习笔记(2)—— 运行时数据区概述及线程

在上一篇中我们讲了JVM的类加载子系统&#xff0c;现在我们就来到了运行时数据区。而不同版本的JVM对于内存的划分方式和管理机制存在着部分差异&#xff08;最典型的就是方法区实现的差异&#xff09;&#xff0c;本文针对经典的Hotspot jvm进行讨论&#xff0c;对运行时数据区…

Mongoose应用和文件上传

一、Express框架访问MongoDB数据库 1、目的&#xff1a; ​ &#xff08;1&#xff09;mongoose模块的使用 ​ &#xff08;2&#xff09;学会代码的封装&#xff1a;dao层、service层、接口层 ​ &#xff08;3&#xff09;MVC设计思想&#xff1a;M(Model)、V(View)、C(C…

WEB前端期末大作业——关于酒店主题网站设计——高级酒店公寓网页(4页)

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

如何使用gitee码云?创建库,克隆远程仓库,上传代码,小绿格等问题

目录 前提软件&#xff1a;先安装Git&#xff0c;再安装TortoiseGit&#xff08;可以在网上找找~默认下一步安装即可&#xff09; 一、访问网站Gitee - 基于 Git 的代码托管和研发协作平台 二、创建库 二、克隆远程仓库到本地电脑 - 仓库与本地链接 三、上传文件到gitee库里…

【Linux基础知识点】内核、系统调用、Shell、指令集、微架构、硬件架构、用户态、内核态、进程、用户线程、内核线程

参考 Linux内核版本和发行版本Linux架构用户态和内核态的简单理解「建议收藏」CPU、操作系统内核、ARM内核与架构的理解【科普】一文看懂指令集是什么一文搞懂X86架构和ARM架构的区别线程和进程的区别是什么&#xff1f;如何理解内核线程、内核进程&#xff1f; 讲解 知识点详…

Linux 业务突然宕机、系统卡死、磁盘空间爆满,该怎么查?

场景 在服务器运维过程中&#xff0c;我们偶尔会发现业务突然宕机&#xff0c;进去服务器发现异常卡顿查看服务器磁盘空间发现磁盘满载。 如何找到占用空间大的目录或文件&#xff1f; 1、比较笨的方法&#xff1a; 在根目录下&#xff0c;du -hs命令&#xff0c;列出各目录…

Redis缓存问题

目录 1、缓存穿透 2、缓存击穿 3、缓存雪崩 ​​​​​​​4、Redis的并发竞争key问题 ​​​​​​​1、缓存穿透 大量请求缓存中和数据库不存在的数据。 大量用户请求缓存中和数据库中不存在的数据&#xff0c;导致所有请求都落到数据库上&#xff0c;造成数据库短时间内承…