首页 > 其他分享 >1123 舍入(测试点2,6,7,8)

1123 舍入(测试点2,6,7,8)

时间:2024-06-05 17:34:11浏览次数:28  
标签:舍入 测试点 1123 carry && need com size

在这里插入图片描述
在这里插入图片描述

solution

  • 注意负号的取舍以及进位
    • 只有舍入后非零的负数才会输出负号
    • 可能有多位进位,用高精度加法
  • 测试点2,6:整数
1 3
1 8
8.000
  • 测试点7:多次进位
1 3
3 9.9999
10.000
  • 测试点8:舍入后全0的负值
1 3
3 -0.0000000001
0.000
#include<iostream>
#include<string>
using namespace std;
int main(){
	int n, d, com, cnt, minus, all, carry, point, p, need, have, i, t;
	string s;
	cin >> n >> d;
	while(n--){
		cnt = minus = all = carry = point = p = need = have = 0;
		cin >> com >> s;
		if(s[0] == '-'){
			minus = 1;
			s.erase(0, 1);
		}
		while(p < s.size() && s[p] != '.') p++;//找到小数点位置
		if(p < s.size() && com != 2){//处理进位
			if(com == 1 && p + d + 1 < s.size() && s[p + d + 1] > '4') need = 1;
			else if(com == 3 && p + d + 1 < s.size() && s[p + d + 1] > '4'){
				if(s[p + d + 1] > '5') need = 1;
				else{
					for(int i = p + d + 2; i < s.size() && !have; i++){
						if(s[i] >= '1' && s[i] <= '9') have = 1;
					}
					if(have || (s[p + d] - '0') % 2 == 1) need = 1;
				}
			}
			carry = need;
			for(int i = p + d; i >= 0 && need; i--){//高精度加法
				if(s[i] == '.') continue;
				t = s[i] - '0' + carry;
				s[i] = t % 10 + '0';
				carry = t / 10;
			}
			if(carry) s = "1" + s;//最高位仍有进位时,数字前加一
		}
		for(int i = 0; i < s.size() && i < p + d && !all; i++){//是否全0
			if(s[i] >= '1' && s[i] <= '9') all = 1;
		}
		if(all && minus) cout << "-";//不是全0且有负号,才输出负号
		for(i = 0; i < s.size() && i <= p + d; i++){
			cout << s[i];
		}
		if(p == s.size()) {//整数时,添加小数点(D是正整数,所以一定需要输出小数点)
			cout << ".";
			p--;
		}
		while(i - p <= d + carry){//不足D位则补0
			cout << "0";
			i++;
		}
		cout << endl;
	}
	return 0;
}

标签:舍入,测试点,1123,carry,&&,need,com,size
From: https://blog.csdn.net/Moliay/article/details/139468425

相关文章

  • [题解]UVA11235 Frequent values
    https://www.luogu.com.cn/problem/UVA11235没看到多测调了半天每组数据给定\(n,q\)。接下来给出一个长度为\(n\)的不降序列\(A\)。接下来\(q\)次询问,每次询问给定\(l,r\),求\(A_{l\simr}\)中出现最多的那个数出现了多少次。\(1\len,q\le10^5\)。序列不降,意味着一个数在序......
  • 软件测试人员必知H5/小程序测试点
    01H5相关测试H5优势:1.H5可以跨平台,开发成本相对较低;2.H5可随时上线就更新版本,适合快速迭代;3.H5可以轻量的触达用户,提供更快捷的服务;4.在微信入口或者浏览器上,用户只需点开链接就可以获取我们所提供的服务 H5劣势:1.H5->的转化强依赖于浏览器;2.H5目前基本无法将数据存储......
  • 最新整理|软件测试常见项目测试点&面试问题分析
    大家好!我是川石教育的老黄,最近更新了一门课程:软件测试常见项目测试点&面试问题分析。之所以录制这门课程,是因为发现大家面试的过程中,被问及实际项目的时候回答不好,说不清楚项目的数据流、业务流、测试点等等系列问题,最终导致面试失败。这门课程也是我在辅导过5000多名学员就业......
  • APP端体验测试点整理
    1、导航测试  按钮、对话框、列表和窗口等,或在不同的连接页面之间需要导航 是否易于导航,导航是否直观 是否需要搜索引擎 导航与页面结构、菜单、连接页面的风格是否一致2、图形测试  横向比较,各个控件操作方式统一 自适应界面设计,内容根......
  • 下列不属于分解测试点时的关注点的是( )
    选项:A、性能B、⽆充分理由的揣测C、偶然的设计失误D、可测性答案:BC解析:验证空间是⼀个⽆限集合,我们不可能细化到所有的元素,这就需要我们在分解时重视⼀些主要的关注点,同时忽略掉⼀些不必要的⾮关注点,1、测试点主要关注:a)功能的正确;b)功能、性能点的覆盖;c)发现设计错......
  • 如何写测试点分析图?
    做软件测试一遍做的工作内容是: 【学习是长时间的时间,需要付出很多时间。】访谈写代码的流程:1.根据需求画思维导图。。。2.写业务代码(增删改查),3.写spring框架代码。会用就行。想了解怎么实现的,等价的时间,变化的东西,需要后端写,比如用户名称年龄。不会的固定的文字等东西由前端......
  • 1052 卖个萌(测试点1)
    测试点1,可能给出的数字<=0,也是不合法的。Dev-C好像不能打印出来╮这个字符,搞得我一直以为写错了,实际上并没有错。#include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f3f3f3f;#definelllonglongstringshou[20],yan[20],kou[20];intsetbiao(strings1,......
  • 音频测试点整理
    1、音频是提前加载还是点击才加载?2、是否能正常播放?暂停?暂停后续播?3、音频是什么格式?4、支持大小限制?5、前后拖动进度条能否正常播放?6、第一首/上一首/下一首/最后一首7、循环播放8、快进、快退9、声音是否清晰,音质是否可选择10、声音是否走系统音量大小11、插入耳机,耳......
  • 视频测试点整理
    支持哪些格式的视频视频的大小有没有限制视频的加载是否完全,加载时间最长是多少视频是否有封面,封面是取的第几帧还是怎么设置视频是否有观看前引导视频加载完成后是暂停还是播放状态视频播放是否正常视频暂停是否正常视频暂停后播放是否正常视频是否有锁屏,暂停和播放状......
  • macOS Monterey 12.7.4 (21H1123) 正式版发布,ISO、IPSW、PKG 下载 (安全更新)
    macOSMonterey12.7.4(21H1123)正式版发布,ISO、IPSW、PKG下载(安全更新)3月8日凌晨,macOSSonoma14.4发布,同时带来了macOSVentru13.6.5和macOSMonterey12.7.4安全更新。本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U......