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 ...
随机推荐
- Nordic芯片调研简析
一 公司简介: Nordic semiconductor是一家在奥斯证券交易所(OSX:NOD)上市的挪威无晶圆厂半导体公司,专门研究IoT的无线技术.Nordic的声誉建立在领先的技术和开发工具之上 ...
- Linux Subreaper 机制及内核态逃离方法(PR_SET_CHILD_SUBREAPER, prctl, systemed)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 无 前言 由于某些其他的原因,我们在测试另外一 ...
- 大年学习linux(第一节)
Linux学习笔记 一.常用命令 终端快键键: Ctrl+a/home 切换到命令行开始 Ctrl+e/end 切换到命令行末尾 Ctrl+i 清除屏幕内容,效果等同于clear Ctrl + u 清 ...
- C++正则表达式 <regex>
一 简介 概括而言,使用正则表达式处理字符串的流程包括: 用正则表达式定义要匹配的字符串的规则, 然后对目标字符串进行匹配, 最后对匹配到的结果进行操作. C++ 的 regex 库提供了用于表示正则 ...
- .NET Emit 入门教程:第四部分:构建类型(Type)
前言: 在动态生成代码的过程中,构建类型(Type)是至关重要的一步. 通过使用 Emit 中的 TypeBuilder,我们可以定义和创建各种类型,包括类.结构体和接口. 本节将深入探讨如何使用 T ...
- 如何使用LOTO示波器 绘制 频率响应特性曲线?
在工作和项目中,经常会遇到一个功能电路模块对信号进行调理,或滤波,或放大,或衰减,或阻抗变换.这些功能电路模块可能是无源阻容的,也可能是有源的运放电路,也可能是更复杂的系统.但是它们对信号进行调理的最 ...
- linux安装crontab
1.查看是否安装 rpm -qa | grep cron #没有输出内容说明没有安装 2.安装 yum -y install vixie-cron #cron 的主程序 yum -y install ...
- KingbaseES 数据库中不同user的视图访问授权
前言 本文的目的是实现u1用户访问ud用户下的视图权限. 测试 登录system用户并创建schema,user,并授权schema的有关权限给ud用户 TEST=# select current_u ...
- Emgucv以及debugVisualizer下载
1.Emgucv官网 https://www.emgu.com/ Github-- https://github.com/emgucv/ 在release 包中找到对应系统的版本 例如: libemg ...
- 寻找OpenHarmony「锦鲤」|万元豪礼+技术干货全是你的!
开源项目 OpenHarmony 是每个人的 OpenHarmony 战"码"先锋第二期蓄力出发! 同时,我们也推出了全网寻找开源锦鲤的活动 只为每一位参与OpenHarmony开 ...