蓝桥杯刷题冲刺 | 倒计时11天

作者:指针不指南吗
专栏:蓝桥杯倒计时冲刺

🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾

文章目录

  • 1.质因子
  • 2.蓝桥王国

1.质因子

  • 题目

    链接: 1545. 质因子 - AcWing题库

    给定一个整数 N,找出它的所有质因子,并按如下格式输出:

    N= p 1 k 1 ∗ p 2 k 2 ∗ . . . ∗ p m k m p1^{k1}*p2^{k2}*...*pm^{km} p1k1p2k2...pmkm

    注意: 如果 N=1 则输出 1=1

    输入格式

    一个整数 N。

    输出格式

    输出时,按 N=p1^k1*p2^k2*...*pm^km 的格式输出答案。

    其中 pi 是质因子,应按照递增顺序排列,ki 是 pi 的指数,如果 ki 为 1,则不必输出。

    数据范围

    1≤N≤ 2 31 2^{31} 231−1

    输入样例:

    97532468
    

    输出样例:

    97532468=2^2*11*17*101*1291
    
  • 第一次 AC 90%

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    
    void f(int n)
    {
        for(int i=2;i<=n/i;i++)
        {
            int s=0;
            while(n%i==0)
            {
                n/=i;
                s++;
            }
            
            if(s==0)
                continue;
            
            if(s==1) 
                cout<<i<<'*';
            else
                cout<<i<<'^'<<s<<'*';
                
           
        }
         if(n>1)
            cout<<n;
    }
    
    
    int main()
    {
        ll n;
        cin>>n;
        
        cout<<n<<"=";
        
        if(n==1)
            cout<<n<<endl;
        else
            f(n);
        
        return 0;
    }
    

    第一次的符号输出有问题

  • 题解

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        long long n;
        cin>>n;
        
        if(n==1)  //特判
        {
            cout<<"1=1";
            return 0;
        }
        
        cout<<n<<"=";
        
        bool first_use =1;  //解决符号问题
        
        for(long long i=2;i<=n/i;i++)  //分解质因子的模板
        {  
            if(n%i==0)  //注意这里需要判断,再s=0
            {
                int s=0;
                while(n%i==0)
                {
                    n/=i;
                    s++;
                }
                
                if(first_use) first_use=0;  //符号这里要注意
                else cout<<'*';
               
                cout<<i;
                
                if(s>1) cout<<'^'<<s;
            }
        }
        
        if(n>1)
            if(first_use)
                cout<<n;
            else cout<<'*'<<n;
        
        return 0;
    }
    
  • 反思

    1. 数据范围复习

      unsigned int0~4294967295 (10位数,4e9)
      int-2147483648~2147483647 (10位数,2e9 2 31 2^{31} 231-1)
      long long-9223372036854775808~9223372036854775807 (19位数, 9e18 ) 2 63 2^{63} 263-1
      unsigned long long0~18446744073709551615 (20位数,1e19) 2 64 2^{64} 264 - 1

      其实,这个题我试了试 不用 long long 也能 AC

      但是 考试的时候 还是 long long 吧,万一越界了呢 ,我胆小

    2. 这个题输出带有运算符号

      第一次,我都整晕了,没有想起来有 flag 来标记第一个+* 带在每一质因子的前面,一直想的是*带在后面,想了好久,最后一个怎么不带 这个符号 T-T

      • 输出技巧:使用 flag 标记第一个数,符号带在数的前面(说的有点抽象,结合上面这个题理解)
      • 使用 多个 if else 来判断条件,是否输出相对应的符号

2.蓝桥王国

  • 题目

    链接: 蓝桥王国 - 蓝桥云课 (lanqiao.cn)

    小明是蓝桥王国的王子,今天是他登基之日。

    在即将成为国王之前,老国王给他出了道题,他想要考验小明是否有能力管理国家。

    题目的内容如下:

    蓝桥王国一共有 N 个建筑和 M 条单向道路,每条道路都连接着两个建筑,每个建筑都有自己编号,分别为 1∼N 。(其中皇宫的编号为 1)

    国王想让小明回答从皇宫到每个建筑的最短路径是多少,但紧张的小明此时已经无法思考,请你编写程序帮助小明回答国王的考核。

    输入描述

    输入第一行包含三个正整数N,M

    第 2 到 M+1 行每行包含三个正整数 u,v,w,表示 uv 之间存在一条距离为 w 的路。

    1≤N≤3× 1 0 5 10^5 105,1≤m 1 0 6 10^6 1061≤ui, vi≤N,0≤wi≤ 1 0 9 10^9 109

    输出描述

    输出仅一行,共 N 个数,分别表示从皇宫到编号为 1∼N 建筑的最短距离,两两之间用空格隔开。(如果无法到达则输出 −1)

    输入输出样例

    示例 1

    输入

    3 3 
    1 2 1
    1 3 5
    2 3 2
    

    输出

    0 1 3
    
  • 第一次 AC 0%

    #include<bits/stdc++.h>
    using namespace std;
    
    const int N=3*1e2+10,M=1e6+10;
    
    int n,m;
    bool st[N];
    int g[N][N];
    int dist[N];
    
    void dijkstra()
    {
    	memset(dist,0x3f,sizeof dist);
    	
    	dist[1]=0;
    	
    	for(int i=1;i<=n;i++)
    	{
    		int t=-1;
    		for(int j=1;i<=n;j++)
    			if(!st[j]&&(t==-1||dist[t]>dist[j]))
    				t=j;
    				
    		st[t]=true;
    		
    		for(int j=1;j<=n;j++)
    		{
    			dist[j]=min(dist[j],dist[t]+g[t][j]);	
    		}
    	}	
    	
    }
    
    int main()
    {	
    	scanf("%d%d",&n,&m);
    	
    	memset(g,0x3f,sizeof g);
    	
    	while(m--)
    	{
    		int a,b,w;
    		scanf("%d%d%d",&a,&b,&w);
    		g[a][b]=min(g[a][b],w);
    	}
    	
    	dijkstra();
    	
    	for(int i=1;i<=n;i++)
    		if(dist[i]==0x3f3f3f3f)	cout<<-1;
    		else cout<<dist[i]<<' ';
    	
    	return 0;
    }
    

    没输出

  • 第二次 AC 50%

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef pair<int,int> PII;
    
    const int N=3*1e5+10;
    
    int n,m;
    int h[N],e[N],w[N],ne[N],idx;
    bool st[N];
    int dist[N];
    
    void add(int a,int b,int c)
    {
    	e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;
    }
    
    void dijkstra()
    {
    	memset(dist,0x3f,sizeof dist);
    	dist[1]=0;
    	
    	priority_queue<PII,vector<PII>,greater<PII>> heap;
    	heap.push({0,1});
    	
    	while(heap.size())
    	{
    		auto t=heap.top();
    		heap.pop();
    		
    		int vis=t.second,distance=t.first;
    		
    		if(st[vis])
    			continue;
    		
    		st[vis]=1;
    		
    		for(int i=h[vis];i!=-1;i=ne[i])
    		{
    			int j=e[i];
    			
    			if(dist[j]>distance+w[i])
    			{
    				dist[j]=distance+w[i];
    				heap.push({dist[j],j});
    			}
    		}
    	}
    }
    
    int main()
    {
    	scanf("%d%d",&n,&m);
    	
    	memset(h,-1,sizeof h);
    	
    	while(m--)
    	{
    		int a,b,c;
    		scanf("%d%d%d",&a,&b,&c);
    		add(a,b,c);
    	}
    	
    	dijkstra();
    	
    	for(int i=1;i<=n;i++)
    		if(dist[i]==0x3f3f3f3f) cout<<-1<<' ';
    		else cout<<dist[i]<<' ';
    	
    	return 0;
     } 
    
  • 第三次 AC 100%

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    
    typedef pair<long long,int> PII;
    
    const int N=5*1e5+10;
    
    ll n,m;
    ll h[N],e[N],w[N],ne[N],idx;
    bool st[N];
    ll dist[N];
    
    void add(ll a,ll b,ll c)
    {
    	e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;
    }
    
    void dijkstra()
    {
    	memset(dist,0x3f,sizeof dist);
    	dist[1]=0;
    	
    	priority_queue<PII,vector<PII>,greater<PII>> heap;
    	heap.push({0,1});
    	
    	while(heap.size())
    	{
    		auto t=heap.top();
    		heap.pop();
    		
    		ll vis=t.second;
    		long long distance=t.first;
    		
    		if(st[vis])
    			continue;
    		
    		st[vis]=1;
    		
    		for(ll i=h[vis];i!=-1;i=ne[i])
    		{
    			ll j=e[i];
    			
    			if(dist[j]>distance+w[i])
    			{
    				dist[j]=distance+w[i];
    				heap.push({dist[j],j});
    			}
    		}
    	}
    }
    
    int main()
    {
    	scanf("%lld%lld",&n,&m);
    	
    	memset(h,-1,sizeof h);
    	
    	while(m--)
    	{
    		ll a,b,c;
    		scanf("%lld%lld%lld",&a,&b,&c);
    		add(a,b,c);
    	}
    	
    	dijkstra();
    	
        for(ll i=1;i<=n;i++)
            if(dist[i]>=0x3f3f3f3f3f3f3f3f) cout<<-1<<' ';   //long long 需要 8个3f
        else cout<<dist[i]<<" ";
    	
    	return 0;
     } 
    
  • 反思

    1. 第一次直接用错模板了

      朴素版的模板用于稠密图(矩阵存),堆优化版用于稀疏图(邻接表存)

      m是 1 0 5 10^5 105 级别的话就是稠密图,m是n级别的就是稀疏图

    ps数组元素个数不能太多,一开始用的 1e5 ,编译过不去

Alt

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NexNoSQL Client:Elasticsearch、Redis、MongoDB三合一的可视化客户端管理工具

背景&#xff1a; 工作中我们使用了Elasticsearch作为存储&#xff0c;来支持内容的搜索&#xff0c;Elasticsearch这个软件大家都耳熟能详&#xff0c;它是一个分布式、高扩展、高实时的搜索与数据分析引擎&#xff0c;不仅仅支持文本索引&#xff0c;还支持聚合操作&#xf…

Java面向对象部分 个人学习记录

注:此博客是个人学习记录&#xff0c;会有错的地方&#xff0c;面向对象部分我可能会画很多图来加深我的理解 不引出了&#xff0c;直接开始 class Dog{String name;int age;String type;public Dog(String name,int age,String type){this.namename;this.ageage;this.typetyp…

全志V3S嵌入式驱动开发(准备)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 要学好嵌入式&#xff0c;其实最好自己可以画板子、调试板子、写软件、调试软件这样来学习。简单的51单片机、stm32这样的mcu或许画起来不是很复杂…

Python 自动化指南(繁琐工作自动化)第二版:零、前言

关于作者 Al Sweigart 是一名软件开发人员和技术书籍作者。Python 是他最喜欢的编程语言&#xff0c;他是该语言的几个开源模块的开发者。他的其他书籍可以在他的网站上根据知识共享许可免费获得。他的猫现在重 11 磅。 关于技术评审 Philip James 从事 Python 工作已经超过…

MobTech 秒验|本机号码一键登录会泄露隐私吗

本机号码一键登录是一种新型的应用登录方式&#xff0c;它可以利用运营商的数据网关认证能力&#xff0c;实现手机号免密登录&#xff0c;提高用户体验和转化率&#xff0c;降低验证成本和流失率。本机号码一键登录支持三大运营商号码认证&#xff0c;3秒内完成手机号验证&…

Java小课堂:自定义注解(案例:自定义DecimalFormat注解)

文章目录 引言I 预备知识1.1 元注解1.2 Target注解的ElementType枚举1.3 Retention注解的RetentionPolicy枚举II 自定义注解2.1 基本条件2.2 注解自定义属性的格式III 案例3.1 自定义DecimalFormat注解3.2 自定义json序列化解析引言 需求: 编辑费率限制的值时填写几位就保存几…

如何在前端中实现精美的图片和文字的垂直对齐

&#x1f31f;所属专栏&#xff1a;前端只因变凤凰之路 &#x1f414;作者简介&#xff1a;rchjr——五带信管菜只因一枚 &#x1f62e;前言&#xff1a;该系列将持续更新前端的相关学习笔记&#xff0c;欢迎和我一样的小白订阅&#xff0c;一起学习共同进步~&#x1f449;文章…

关于线性与条带化下LVM增加磁盘数据分布的讨论

关于线性与条带化下LVM增加磁盘数据分布的讨论一、环境介绍二、线性模式逻辑卷创建逻辑卷删除三、条带化逻辑卷创建逻辑卷删除LVM有两种模式&#xff1a;线性模式&#xff1a;先写满组成线性逻辑卷的第一个物理卷&#xff0c;再向第2个物理卷中写入数据&#xff0c;以此类推&am…

必看>>>>Linux数据库被其他服务器远程访问(修改权限、开设端口)

目录 一&#xff1a;修改权限 1.1 进入Linux数据库 1.2 修改数据库的远程连接权限 1.2.1 数据库远程权限修改命令 1.2.2 数据库远程权限查看命名 1.3 给Linux机添加端口 1.4 远程数据库连接 注意mysql中的中英文输入 一&#xff1a;修改权限 1.1 进入Linux数据库 文章…

【职场热点】软件测试岗位,真正达到月收入1万以上的有多少

在某一线城市相亲角&#xff0c;有位阿姨自称孩子是程序员、36岁、月入3万8&#xff0c;并直言“月入1万如讨饭”&#xff0c;引来大量互联网人自嘲式认领“乞丐”身份。今年2月&#xff0c;“月收入一万”的鄙视链压力给到了二线城市&#xff0c;有位入行2年的软件测试员发帖称…

1-python基础

1.字面量 被写在代码中固定的值 2.注释 # 单行注释""" 多行注释1&#xff1a;三对双引号 """ 多行注释2&#xff1a;三对单引号 3.变量与输出 age10 # 变量赋值 print("我今年",age,"岁") &#xff08;1&#xff09;pri…

Java数据类型与变量

1.字面常量 public class Demo{ public static void main(String[] args){ System.Out.println("hello world!"); System.Out.println(300); System.Out.println(3.1415926); System.Out.println(T); System.Out.println(true); System.Out.println(false); } 其中…

【CocosCreator入门】CocosCreator组件 | ParticleSystem (粒子)组件

Cocos Creator 是一款流行的游戏开发引擎&#xff0c;具有丰富的组件和工具&#xff0c;其中ParticleSystem组件是一个用于创建粒子效果的工具&#xff0c;可用于实现火花、爆炸、雪花等效果。 目录 一、组件属性 二、组件使用 三、效果演示 四、性能优化 一、组件属性 属性…

迅为3A5000_7A2000工控主板,龙芯自主指令集架构全国产工业级板卡性能

迅为iTOP-3A5000开发板核心板底板方式&#xff0c;底板资料开源&#xff0c;提供底板的原理图和PCB工程文件&#xff0c;可以根据需求定制属于自己的开发板。 核心板也支持工业级核心板定制开发。 根据二进制翻译功能使用&#xff0c;可流畅运行WIN和Android系统APP。 支持Loo…

renderdoc resource manager说明

*写在前面 只针对renderdoc opengl es 场景进行说明&#xff0c; vukan的没有&#xff0c;不过其实应该也差不多啦&#xff0c;若有必要后面再考虑补上。本文使用 文字图代码 的方式叙述&#xff0c;若只想了解原理过程&#xff0c;可忽略代码部分&#xff0c; 由于renderdoc代…

文章生成器-免费的文章生成器

随着信息爆炸的时代&#xff0c;自媒体人员不仅需要创造性的策略&#xff0c;还需要快速产生具有高质量文章的能力&#xff0c;这样才能快速响应趋势并保持优势。文章生成器&#xff0c;一款基于人工智能和自然语言处理技术的文本生成软件&#xff0c;可在没有任何人工干预的情…

企业搭建帮助中心的额方式有哪些?

帮助中心对于企业价值的重要性在于提高客户满意度和忠诚度&#xff0c;增强企业品牌形象&#xff0c;促进业务增长和提高利润率。通过提供详细的帮助文档和客户支持&#xff0c;企业可以向客户传达其专业知识和技能&#xff0c;并帮助客户更好地使用其产品或服务。这将提高客户…

C++(Qt)软件调试---使用任务管理器导出Dump(6)

C(Qt)软件调试—使用任务管理器导出Dump&#xff08;6&#xff09; 文章目录C(Qt)软件调试---使用任务管理器导出Dump&#xff08;6&#xff09;1、前言2、软件下载3、使用三款软件导出Dump4、软件下载地址更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f44…

『.NET Tools』在.NET中实现汉字转拼音,只要一个方法就够了!

&#x1f4e3;读完这篇文章里你能收获到 傻瓜式扩展方法直接使用可实现汉字转拼音及汉字转拼音首字母功能感谢点赞收藏&#xff0c;避免下次找不到~ 文章目录一、代码引用Step 1 : 安装包&#xff0c;通过Nuget安装包Step 2 : 代码通过扩展方法/帮助类实现实现汉字转拼音实现汉…

谷粒商城-redis分布式锁系列

1.压力测试出的内存泄漏及解决&#xff08;可跳过&#xff09; 使用jmeter对查询产品分类列表接口进行压力测试&#xff0c;出现了堆外内存溢出异常。 我们设置的虚拟机堆内存100m&#xff0c;并不是堆外内存100m 产生堆外内存溢出&#xff1a;OutOfDirectMemoryError 原因是…
最新文章