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

news2024/11/26 3:12:52

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


文章目录

  • 算法竞赛入门【码蹄集进阶塔335题】(MT2276-2280)
  • 前言
      • 为什么突然想学算法了?
      • 为什么选择码蹄集作为刷题软件?
  • 目录
    • 1. MT2276 数的自我
    • 2. MT2277 分数个数
    • 3. MT2278 欧拉函数
    • 4. MT2279 欧拉函数2
    • 5. MT2280 数字游戏
    • 结语


前言

在这里插入图片描述

为什么突然想学算法了?

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

在这里插入图片描述


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

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


目录

1. MT2276 数的自我

(1)题目描述
提瓦特大陆上有一个贫穷的占星术士小码哥,出于占星术的要求,他时常要解决一些困难的数学问题。这天,上天给了他一个启示:有一类称作 Self一Numbers的数。对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和。例如,d(75)= 75+7+5=87。给定任意正整数n作为一个起点,都能构造出一个无限递增的序列: n,d(n), d(d(n)), d(d(d(n))),…例如,如果你从33开始,下一个数是33+3+3=39,再下一个为39+3+9=51,再再下一个为51+5+1=57,因此你所产生的序列就像这样:33,39,51,57,69,84,96,111,114,120,123,129,141,…数字n被称作d(n)的发生器。在上面的这个序列中,33是39的发生器,39是51的发生器,51是57的发生器等等。有一些数有超过一个发生器,如101的发生器可以是91和100。一个没有发生器的数被称作Self 一Number。如前13个 Self - Number为1,3,5,7,9,20,31,42,53,64,75,86,97。我们将第i个Self -Number表示为a[i],所以a[1]= 1,a[2]= 3,a[3]=5…

现在小码哥需要找到一个[1,N]的区间内所有的Self - Number,请你帮帮他。

格式

输入格式:
第一行输入以空格隔开的两个整数Ⅳ和K,第二行输入K个以空格隔开的整数$1,82,s3 . . . Sk 。
.
输出格式:
第一行你需要输出一个数,这个数表示在闭区间[1,N]中Self - Number的数量。
第二行必须包含以空格分隔的K个数,表示a[s1] …a[sk],这里保证所有的a[s1] …a[sg.]都小于N。(例如,如果N=100,s:可以为1-13,但不能为14,因为a[14]=108 > 100)。

样例1

输入:
100 10
1 2 3 4 5 6 7 11 12 13
.
输出:
13
1 3 5 7 9 20 31 75 86 97

备注:

其中:1<N ≤107,1<K ≤5000。

(2)参考代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int cnt,n,k;
int ans[1000010];
bool flag[10000010];
int next(int num){
    int ans=0;
    ans+=num;
    while(num!=0){
        ans+=num%10;
        num/=10;
    }
    return ans;
}
int main(){
    memset(flag,true,sizeof(flag));
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
        if(flag[i]){
            ans[++cnt]=i;
            int now=next(i);
            while(now<=n&&flag[now]) {
                flag[now]=false;
                now=next(now);
            }
        }
    printf("%d\n",cnt);
    int t=0;
    for(int i=1;i<=k;i++){
        scanf("%d",&t);
        printf("%d ",ans[t]);
    }
}

2. MT2277 分数个数

(1)题目描述

定义简分数为,分母d >分子n,且不可以再约分。

如果我们把d≤6的所有简分数以从小到大的顺序排列,则有:
1/6,1/5,1/4,1/3,2/5,1/2,3/5,2/3,3/4,4/5,5/6,可以看到这个集合中包含的分数有11个。给定d,求这个最简分数集合中包含有多少个分数?

格式

输入格式: 一个整数d。
.
输出格式: 输出一个整数表示包含的分数的个数。

样例1

输入: 6
.
输出: 11

备注:

提示:2<d≤105。

(2)参考代码

#include<bits/stdc++.h>
using namespace std;

int main()
{
	long long n,i,k,ans,t,sum;
    scanf("%lld",&n);
    sum=0;
    for(k=2;k<=n;k++){
        ans=k;
        t=k;
        for(i=2;i*i<=t;i++){
            if(t%i==0){
                ans-=ans/i;
                while(t%i==0) t/=i;
            }
        }
        if(t!=1) ans -= ans/t;
        sum+=ans;
    }
    printf("%lld\n",sum);
    return 0; 
	return 0;
}


3. MT2278 欧拉函数

(1)题目描述
给出给定正整数n,求f(n),此处f(n)定义为小于n的所有与n互素的数的个数。


格式

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

样例1

输入格式: 4
.
输出格式: 2

备注:

其中:2≤n ≤1e9。

(2)参考代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL maxa = 1e10 + 10;
LL euler_deall(LL n)
{
  LL res = n;
  for (LL i = 2; i * i <= n; i++)
  {
    if (n % i == 0)
    {
      res = res / i * (i - 1);
      for (; n % i == 0; n /= i)
        ;
    }
  }
  if (n != 1)
    res = res / n * (n - 1);
  return res;
}
int main()
{
  LL n;
  scanf("%lld", &n);
  printf("%lld\n", euler_deall(n));
}

4. MT2279 欧拉函数2

(1)题目描述

给出给定正整数n,求1f(i),此处f(n)定义为小于等于n并且与n互质的数的个数。(此处认为1与1互质)


格式

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

样例1:

输入: 4
.
输出:6

备注:

其中: 1≤n ≤ 1e6

(2)参考代码

def main():
    n = int(input())
    primes = [] # 存质数
    values = [1] * (n + 1) # 存欧拉函数的值
    values[0] = 0 # 0的欧拉函数值为0
    st = [True for _ in range(n + 1)] # 存每个数是否是质数

    for i in range(2, n + 1):  # 对于每个大于2的自然数
        if st[i]:  # 如果是质数,加入质数列表,质数的欧拉函数值为i-1
            primes.append(i)
            values[i] = i - 1
        for p in primes:
            if p > n / i: break
            st[p * i] = False  # p*i不是质数,设置为False
            # 如果i % p != 0 p不是i的质因数,则eulor(p*i) = p * eulor(i) * (p-1) / p = (p-1)* eulor(i)
            values[p * i] = (p - 1) * values[i]
            if i % p == 0:
                # 如果i % p = 0, p是i的质因数,则eulor(p*i) = p * eulor(i)
                values[p * i] = p * values[i]
                break

    print(sum(values))

if __name__ == '__main__':
     main();

5. MT2280 数字游戏

(1)题目描述
在这里插入图片描述


格式

输入格式: 输入只有一行两个整数,分别代表宗教数m 和房间数n。
.
输出格式: 输出一行一个整数代表答案。

样例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/51441.html

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

相关文章

[附源码]Python计算机毕业设计Django房屋租赁系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Web3 来了,让我们展开双手拥抱它吧!

Web3的由来 在介绍Web3概念&#xff0c;有必要阐述下当下的网络世界。而如今的互联网正处于Web2阶段&#xff0c;其已经帮助数以亿计的人融入这个互联网大家庭&#xff0c;可在网络上构建可靠、稳定的基础设施。然而也正是Web2中心化网络成就了极少数互联网巨头&#xff0c;他…

基于STM32的智能家居控制系统设计与实现(带红外遥控控制空调)

1. 前言 智能家居作为家庭信息化的实现方式,已经成为社会信息化发展的重要组成部分,物联网因其巨大的应用前景,将是智能家居产业发展过程中一个比较现实的突破口,对智能家居的产业发展具有重大意义。 本文基于现有智能家居技术设计和实现情况,本着方便操作、增强功能、贴…

Xilinx的TestPattern模块编译错误解决方法

在使用vivado 2018.3编译tpg模块的时候报错&#xff0c;软件提示找不到编译模块&#xff0c;如下&#xff1a; 经过多方咨询后&#xff0c;据说是vivado的版本问题引起的&#xff0c;使用这个版本在2022年之前不会出现问题&#xff0c;因此如果把windows的系统时间修改到2021年…

(论文阅读笔记)Network planning with deep reinforcement learning

[1] ZHU, Hang, et al. Network planning with deep reinforcement learning. In: Proceedings of the 2021 ACM SIGCOMM 2021 Conference. 2021. p. 258-271. Citation: 25文章目录Q1 论文试图解决什么问题&#xff1f;Q2 这是否是一个新的问题&#xff1f;Q4 有哪些相关研究&…

基于GeoPandas的POI人口数赋值方法,按面提取点数据并赋值

基于GeoPandas的POI人口数赋值方法 这个方法是某篇文章中提到的&#xff0c;基于未知兴趣点和街道中心人口点进行的未知兴趣点人口赋值。 我们先来说一下数据&#xff0c;street是街道面数据&#xff0c;里面有一个population字段&#xff0c;用来记录街道总人口值。有一个字…

炫技:拼接列表、破碎二维数组——Python sum()函数隐藏技能花式玩法

【学习的细节是欢悦的历程】Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 自学并不是什么神秘的东西&#xff0c;一个人一辈子自学的时间总是比在学校学习的时间长&a…

【k8s金牌知识】k8s升级攻略

学习内容&#xff1a; 提示&#xff1a;不同版本升级略有差异&#xff0c;详见官网&#xff0c;本例是以Ubuntu为例 官方网址&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/ 1、 k8s升级注意事项 &#xff08;1&#xf…

阿里云产品有哪些?阿里云产品种类整理汇总

阿里云是全球领先的云计算及人工智能科技公司&#xff0c;提供云服务器、云数据库、云安全、云存储、企业应用及行业解决方案服务。那么阿里云产品有哪些?本文为大家介绍下阿里云产品方案及阿里云有哪些热门云产品?阿里云主要产品及功能介绍&#xff0c;阿里云产品分为6大分类…

Flink同步Kafka数据到ClickHouse分布式表

公众号文章都在个人博客网站&#xff1a;https://www.ikeguang.com/ 同步&#xff0c;欢迎访问。业务需要一种OLAP引擎&#xff0c;可以做到实时写入存储和查询计算功能&#xff0c;提供高效、稳健的实时数据服务&#xff0c;最终决定ClickHouse什么是ClickHouse&#xff1f;Cl…

[附源码]JAVA毕业设计高校疫情管理(系统+LW)

[附源码]JAVA毕业设计高校疫情管理&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

[附源码]计算机毕业设计springboot社区疫情防控信息管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Android OpenGL ES 学习(五) -- 渐变色

OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投屏 Android OpenGL ES 学习(五) – 渐变色 代码工程地址&#xff1a; https://…

【实习之velocity 三 Vtl-引入资源】

文章目录一、#include1.作用:引入外部资源&#xff0c;引入的资源不会被引擎所解析2.语法:#include(resource)二、#parse作用:引入的外部资源,引入的资源将被引擎所解析语法:#parse(resource)三、define作用:定义重用模块(不带参数)语法:四、evaluate作用:动态计算,动态计算可以…

学习笔记:内存四区

内存分区模型 1内存分区模型 C程序在执行I将内存大方向划分为4个区域 ●代码区:存放函数体的二进制代码&#xff0c;由操作系统进行管理的 ●全局区:存放全局变量和静态变量以及常量 ●栈区:由编译器自动分配释放存放函数的参数值局部变量等 ●堆区:由程序员分配和释放若程序员…

【WSN布局】基于LICHTENBERG算的多目标传感器选择和放置优化问题研究附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

如何改变胆小怕事的性格?

胆小怕事 就是指一个人做事总是十分胆怯&#xff0c;畏畏缩缩&#xff0c;举手投足也不够大气&#xff0c;经常要看别人的脸色&#xff0c;害怕麻烦上身&#xff0c;对强势的人也会显得唯唯诺诺&#xff0c;战战兢兢。胆小怕事 是某种心理问题的表现&#xff0c;或者说性格缺陷…

基于Q-learning方法的地铁列车时刻表重新调度

文章信息《Metro Train Timetable Rescheduling Based on Q-learning Approach》是发表在2020 IEEE 23rd International Conference on Intelligent Transportation Systems (ITSC)上的一篇文章。摘要在地铁系统中&#xff0c;不可预测的干扰会影响正常运行&#xff0c;给乘客带…

什么是短网址?如何调用接口生成短地址?

随着网络应用的深入和普及&#xff0c;网址资源越来越少了&#xff0c;长尾网址也派上用场了&#xff0c;只是网址太长不方便识别与记录。因此&#xff0c;就有了短网址替代长网址的技术接口。 随着SEO的重要性越来越明显&#xff0c;在推广的时候如果把网页链接缩短可以获得更…

【wireshark】如何获取一个设备的IP地址

问题 开发中往往会出现无法知道设备正确的IP地址&#xff0c;从而无法连接到设备。 解决方式&#xff1a; 使用软件工具wireshark来获取设备IP地址。 可以实现不同网段捕获设备IP 具体流程&#xff1a; 1. 下载wireshark抓包程序 https://www.wireshark.org/download.htm…