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

news/2024/10/19 9:32:31/

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

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/news/1448273.html

相关文章

vue实现左右两栏布局宽度可拖拽

项目里需要左右两栏布局根据内容多少可以用户自己拖拽宽度的需求 找了文章参考了下&#xff0c;但都没有实现我要的效果&#xff0c;所以结合调整了一下&#xff0c;记录一下我自己用到的效果 参考文章放下面了&#xff0c;感谢两位大佬 vue拖拽 html实现拖拽 最终效果实现…

Dashboard 安装部署

Dashboard 安装部署 Dashboard 安装部署 一&#xff1a;下载 二&#xff1a;部署步骤 1.镜像下载及导入 国内直接拉外网镜像会失败&#xff0c;可在境外下载镜像 查看 deployment 里的镜像版本 Dashboard Deploymentcontainers:- name: kubernetes-dashboardimage: k8s.g…

PHP中的Cookie和Session的区别和用法

PHP中的Cookie和Session的区别和用法 在PHP中&#xff0c;Cookie和Session都是用于保存用户状态信息的重要技术&#xff0c;它们在Web开发中扮演着不可或缺的角色。然而&#xff0c;它们在实现方式、存储位置、安全性以及使用场景等方面存在显著的差异。下面将详细解释Cookie和…

vue和react这两大前端框架的优缺点对比

【A】Vue和React是目前最流行的两个前端框架&#xff0c;它们都具有各自的优点和缺点。下面是对Vue和React的优缺点的详细介绍&#xff1a; Vue的优点&#xff1a; 简单易学&#xff1a;Vue的API设计简单&#xff0c;上手较为容易&#xff0c;学习曲线相对较低。文档丰富&…

OpenCV如何为等值线创建边界旋转框和椭圆(63)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV 为轮廓创建边界框和圆(62) 下一篇:OpenCV的图像矩(64) 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 cv::minAreaRect使用 OpenCV 函数 cv::fitEllipse cv::min…

第G9周:ACGAN理论与实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 由于ACGAN的原理在上一篇文章中已经很详细的解释过了&#xff0c;这次我们直接上代码 一、代码解读 import argparse import os import numpy as npimport t…

黑马 - websocket搭建在线聊天室

这里写自定义目录标题 一、消息推送常见方式二、websocket 是什么&#xff1f;三、websocket api的介绍1、客户端 &#xff08;浏览器&#xff09; 四、实现在线聊天室1、需求2、聊天室流程分析3、消息格式4、代码实现 一、消息推送常见方式 1、轮训方式 2、SSE&#xff08;…

JDBC连接MySQL8 SSL

1.创建用户并指定ssl连接 grant all on . to test% identified by imooc require SSL(X509); 2.查看是否使用ssl SELECT ssl_type From mysql.user Where user"test" 3.配置用户必须使用ssl ALTER USER test% REQUIRE SSL(X509); FLUSH PRIVILEGES; 注意&#xff…