CF1857B Maximum Rounding 题解
题目描述
给定一个自然数 \(n\),可以对任意一位进行四舍五入,可以进行任意次,求能得到的最大数。(这里的 \(n\) 没有前导零)
思路
首先我们发现,如果我们将其中一位进位了,那后面的所有位都会变成 \(0\),
因此,如果我们进位了两次,那么位置靠后的那次进位,其实是没有用的。所以我们要从高位往低位找,找到第一个可以进位的数字,把他和他后面的数都变成 \(0\)。然后上一位 \(+1\)。
但是,上一位可能进 \(1\) 之后,又可以进位了,所以要再次进位,直到无法进位为止。
例子:
- 原序列:
344910 - 找到 \(9\) :
344910 - 变成 \(0\):
344000 - 高位 \(+1\):
345000 - 进位 $ $:
350000 - 进位 $ $:
400000
Code
#include <bits/stdc++.h>
using namespace std;
char S[200005];
int T;
int main()
{
scanf("%d",&T);
while(T--){
scanf("%s",S+1); //防止进位时溢出
S[0]='0'; //防止进位时溢出
for(int i=1;S[i];i++){
if(S[i]>='5'){
int j=i-1;
S[j]++; //高位+1
for(int k=i;S[k];k++) S[k]='0'; //当前位及低位赋0
while(S[j]>='5'){ //持续进位
S[j-1]++;
S[j]='0';
j--;
}break;
}
}
if(S[0]!='0') printf("%s\n",S); //数字位数+1
else printf("%s\n",S+1); //数字位数不变
}
return 0;
}
CF1857B Maximum Rounding 题解的更多相关文章
- C#版 - Leetcode 414. Third Maximum Number题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- [LeetCode]Maximum Subarray题解
Maximum Subarray: Find the contiguous subarray within an array (containing at least one number) whic ...
- c++常见变量的极值
#include "numeric_limits.hpp"#include <limits>#include <iostream> //////////// ...
- Best Time to Buy and Sell Stock leetcode java
题目: Say you have an array for which the ith element is the price of a given stock on day i. If you w ...
- 算法与数据结构基础 - 排序(Sort)
排序基础 排序方法分两大类,一类是比较排序,快速排序(Quick Sort).归并排序(Merge Sort).插入排序(Insertion Sort).选择排序(Selection Sort).希尔 ...
- 算法与数据结构基础 - 分治法(Divide and Conquer)
分治法基础 分治法(Divide and Conquer)顾名思义,思想核心是将问题拆分为子问题,对子问题求解.最终合并结果,分治法用伪代码表示如下: function f(input x size ...
- [LeetCode 题解]: Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- Find the Maximum - 题解【思维,贪心】
题面 这是2022年ICPC昆明站的F题.在赛场上,我一开始敲了个贪心,但是出锅了,改敲树形DP,但是时间来不及了.在队友的提醒下补过了这个题,知道解法的我发现我就是个纯纯的老坛-- 原题链接在牛客网 ...
- LeetCode题解-----Maximum Gap
题目描述: Given an unsorted array, find the maximum difference between the successive elements in its so ...
- [LeetCode]题解(python):104 Maximum Depth of Binary Tree
题目来源 https://leetcode.com/problems/maximum-depth-of-binary-tree/ Given a binary tree, find its maxim ...
随机推荐
- rancher添加用户报错x509: certificate has expired Internal error occurred: failed calling webhook "rancherauth.cattle.io":
错误信息: Internal error occurred: failed calling webhook "rancherauth.cattle.io": Post https: ...
- float、double的精度、范围,在内存中的存储方式
float.double的精度,在内存中的存储方式 一.浮点型变量在内存中的存储方式 Java的浮点数遵循IEEE 754标准,采用二进制数据的科学计数法来表示浮点数,float遵从的是IEEE R3 ...
- 8、Linux CentOS 安装.Net Core 3.1
1.添加密钥 将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库. 打开终端并运行以下命令: sudo rpm -Uvh https://packages.m ...
- 大年学习linux(第六节---软件安装)
六.软件安装 rpm RPM软件包的管理工具 补充说明 rpm命令 是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功 ...
- 为什么ASP.NET Core的路由处理器可以使用一个任意类型的Delegate
毫不夸张地说,路由是ASP.NET Core最为核心的部分.路由的本质就是注册一系列终结点(Endpoint),每个终结点可以视为"路由模式"和"请求处理器"的 ...
- 用Vue3.0 写过组件吗?如果想实现一个 Modal你会怎么设计?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.组件设计 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式 现在有一个场景,点击新增与编辑都弹框出来进行 ...
- 记录--JavaScript 令人惊讶的一点:对于空数组every()方法返回true
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 JavaScript 语言的内核足够大,导致我们很容易误解它的某些部分是如何工作的.我最近重构了一些使用 every ()方法的代码,并且 ...
- Linux基础操作一
开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 开启虚拟机→Username:root→Password:"(注册时所创建的密码,比如"123 ...
- Java Agent技术
在定位公司问题的时候,需要了解一下skywalking的相关知识,而agent就提上了日程. 官网文档 Agent技术是Jdk在1.5版本之后,所提供的一个在jvm启动前后对部分java类代理加强的机 ...
- Mysql中的锁(case篇)
case1(表锁的读-写-读阻塞) 上篇文档中提到过 WRITE locks normally have higher priority than READ locks to ensure that ...