保留最大数

本文介绍了一种数字修剪算法,用于从给定的数字中删除特定数量的数字,以找到可能的最小值。通过比较相邻数字并删除较小的一个,该算法逐步减少数字的长度,直到达到所需的长度。特别地,文章讨论了当数字按递减顺序排列或所有数字相同时的特殊情况处理。

输入描述:

输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。

输出描述:

输出保留下来的结果。

示例1

输入

325 1

输出

35

分析:每次将数字的第一个字符和第二个字符比较,如果第一个字符小于第二个字符,则删除第一个字符,否则继续向下比较,直到删除指定个字符为止;

考虑特殊情况,即字符从第一个开始保持递减顺序或者字符一直相同,则按照刚刚的方法遍历之后,不会删除任何字符,达不到目的,所以要考虑这种特殊情况。

代码如下:

#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
void Delet(string &str)          //定义删除字符的函数 
{
	int len = str.length();        //从第一个祝福开始 遍历到倒数第二个字符为止 
	for (int i = 0; i < len - 1; i++)
	{
		if (str[i] < str[i + 1])       //如果前一个字符小于后一个字符 
		{
			str.erase(str.begin() + i);  //则将前一个字符删除 跳出循环 
			break;
		}
	}
}
int main()
{
	string str;                   //定义输入的数字为字符串 
	int num;                       //输入要删除的个数 
	while (cin >> str)
	{
		cin >> num;
		for (int i = 0; i < num; i++)
		{
			int len1 = str.length();   //进行删除操作之前,记录当前字符串的长度 
			Delet(str);               //调用删除字符的函数 
			int len2 = str.length();    //将删除后的字符串长度和删除前的字符串进行比较 
			if (len2 == len1)            //如果相等,则为特殊情况 
			{
				str.erase(str.begin() + len2 - 1);    //此时,只需要将末尾的字符删除即可 
			}
		}
		cout << str << endl;               //输出 
	}
}

 

### Qt 中设置或保留小数位数的方法 在 Qt 开发中,可以通过多种方式实现浮点数的小数位数控制。以下是几种常见的方法及其具体实现: #### 使用 `QString::number` 控制小数位数 通过 `QString::number` 方法可以方便地指定浮点数的显示格式并保留特定数量的小数位数。例如: ```cpp #include <QString> #include <QDebug> double value = 32.0; QString str = QString::number(value, 'f', 2); // 设置保留两位小数 qDebug() << str; // 输出 "32.00" ``` 上述代码中的 `'f'` 参数表示固定精度模式,而第三个参数 `2` 则指定了要保留的小数位数[^1]。 --- #### 使用 `QString::asprintf` 格式化字符串 如果需要更复杂的格式化操作(如添加百分号),可以使用 `QString::asprintf` 方法。此方法类似于 C 风格的 `sprintf` 函数,允许灵活定义输出格式。例如: ```cpp #include <QString> #include <QDebug> double value = 0.12345; QString formattedValue = QString::asprintf("%.2f%%", value * 100); qDebug() << formattedValue; // 输出 "12.35%" ``` 在此示例中,`%.2f` 表示保留两位小数,而 `"%%"` 转义为单个百分号字符[^2]。 --- #### 使用 QSpinBox 或 QDoubleSpinBox 的 `setDecimals` 方法 当涉及用户界面控件时,比如 `QDoubleSpinBox`,可以直接调用其 `setDecimals` 方法来设定输入框中小数部分的最大长度。例如: ```cpp #include <QDoubleSpinBox> #include <QApplication> int main(int argc, char **argv) { QApplication app(argc, argv); QDoubleSpinBox spinBox; spinBox.setRange(-1000.0, 1000.0); // 设定范围 spinBox.setValue(123.456); // 初始化值 spinBox.setDecimals(2); // 保留两位小数 spinBox.show(); return app.exec(); } ``` 这里,`spinBox.setDecimals(2)` 明确规定了该控件只支持最多两位小数的数值输入[^3]。 --- #### 总结 以上三种方法分别适用于不同的场景: - 如果仅需简单处理浮点数,则推荐使用 `QString::number`; - 若有复杂格式需求(如附加单位、特殊符号等),可选用 `QString::asprintf`; - 对于 GUI 应用程序中的交互组件配置,应优先考虑利用 `QDoubleSpinBox` 提供的功能接口完成相应调整。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值