蓝桥杯2022年第十三届决赛真题-最大数字

embedded/2024/10/18 5:43:51/

在这里插入图片描述
知识点:

double -------(max)10的308次幂
long long ---------(max)10的18次幂

过 96% 的方法

贪心思想:根据数据范围,很容易想到应该用for遍历每一位,复杂度是O(1)。从前往后看每一位,比较通过+到达9和通过-到达9的个数,选择消耗数比较小的数,并且需要对应的A或B>0,如果最后A和B都不足以补充9,就把A消耗完。

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
string N;
int A,B;signed main(){cin>>N>>A>>B;int len = N.length();for(int i=0;i<len;i++){int a = 9-(N[i]-'0');int b = 10-abs(a);if(A==0&&B==0)break;if(a<b){if(A>=a){N[i]='9';A-=a;}else{if(B>=b){N[i]='9';B-=b;}else{N[i]+=A;A=0;}}}else{if(B>=b){N[i]='9';B-=b;}else{if(A>=a){N[i]='9';A-=a;}else{N[i]+=A;A=0;}}}}cout<<N<<endl;return 0;
}

正解

dfs:枚举每一位,对他进行+或-的搜索
时间复杂度分析:递归深度是位数最多为17,每一位都可以+或者-,所以是O(2^17)。但是A和B最多是100,所以经过剪枝,A和B的限制条件下,最多进行递归调用200次,也就是O(200)。

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
string N;
int A,B;
int res,bit;void dfs(string N1,int bit2,int A,int B){int n = stoll(N1);//mac表示max用不了得自己写一个res = res>n?res:n;//递归出口if((A==0&&B==0)||bit2==bit)return;int a = 9-(N1[bit2]-'0');int b = (N1[bit2]-'0')+1;string temp = N1;//递归调用if(A>=a){N1[bit2]='9';dfs(N1,bit2+1,A-a,B);}else{N1[bit2]+=A;dfs(N1,bit2+1,0,B);}//不同的递归分支,上面不能影响下面,要恢复现场N1 = temp;if(B>=b){N1[bit2]='9';dfs(N1,bit2+1,A,B-b);}
}signed main(){cin>>N>>A>>B;bit = N.length();dfs(N,0,A,B);cout<<res<<endl;return 0;
}

http://www.ppmy.cn/embedded/27991.html

相关文章

图像处理的一些操作(2)

图像处理 9. 转换类型9.1转换成浮点数类型9.2转换成无符号字节类型 10.颜色空间转换10.1RGB转GRAY10.2RGB转HSV10.3RGB转LAB10.4HSV转RGB10.5LAB转RGB10.6 convert_colorspace函数进行颜色转换 11.标签化处理图像11.1导入模块11.2加载图片11.3RGB图像转灰度图像11.4遍历图像11.…

springcloud第4季 springcloud-alibaba之分布式事务seata

一 seata介绍 1.1 seata介绍 1.seata是一款解决分布式事务的解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 二 seata的操作 2.1 seata操作 1.seata的安装 2.seata数据库导入脚本 3.seata的server配置安装

基于SSM的个人博客系统(五)

前面内容请移步 基于SSM的个人博客系统&#xff08;四&#xff09; 个人博客系统的设计与实现免费源码论文 个人博客系统的设计与实现毕业设计论文源码 第六章 系统测试 6.1 前台模块测试 浏览器的网址输入框中输入正确的地址既可以看到系统前台页面: 图5-1前台展示页面 …

JMeter性能压测脚本录制

第一步&#xff1a;电脑打开控制面板设置代理服务器 第二步&#xff1a;jmeter的测试计划添加一个HTTP&#xff08;S&#xff09;脚本记录器 在脚本记录器里配置好信息&#xff0c;然后保存为脚本文件&#xff08;.*表示限定&#xff09; 此方框内容为项目地址&#xff08;可改…

Istio介绍

1.什么是Istio Istio是一个开源的服务网格&#xff08;Service Mesh&#xff09;框架&#xff0c;它提供了一种简单的方式来为部署在Kubernetes等容器编排平台上的微服务应用添加网络功能。Istio的核心功能包括&#xff1a; 服务治理&#xff1a;Istio能够帮助管理服务之间的…

52.HarmonyOS鸿蒙系统 App(ArkTS)配置文件添加多个权限方法

52.HarmonyOS鸿蒙系统 App(ArkTS)配置文件添加多个权限方法 module.json5

【R语言】对EXCEL多行或多列数据合并成一行或一列

对于很多行或很多列数据合并成一行或一列数据&#xff0c;手动是非常麻烦的&#xff0c;尤其当行列数无穷大&#xff0c;根本无法手动处理&#xff0c;在这里价绍一种解决办法&#xff1a;运行R语言&#xff0c;对数据的快速合并。 这里一多列合并成一列为例&#xff08;如果是…

键盘更新计划

作为 IT 搬砖人&#xff0c;一直都认为键盘没有什么太大关系。 每次都是公司发什么用什么。 但随着用几年后&#xff0c;发现现在的键盘经常出问题&#xff0c;比如说调节音量的时候通常莫名其妙的卡死&#xff0c;要不就是最大音量要不就是最小音量。 按键 M 不知道什么原因…