C++信息学奥赛一本通1027

该博客介绍了如何使用C++语言处理信息学奥赛中的浮点数输出题目,具体涉及根据不同的输出格式(%f,%f保留5位小数,%e,%g)来显示双精度浮点数。文章提供了相应的源码示例,展示了如何读取输入的双精度浮点数并按要求格式进行输出。

输出浮点数1027


时间限制: 1000 ms        内存限制: 65536 KB
提交数: 932     通过数:601

【题目描述】

读入一个双精度浮点数,分别按输出格式“%f”,“%f”保留5位小数,“%e”和“%g”的形式输出这个整数,每次在单独一行上输出。

【输入】

一个双精度浮点数。

【输出】

第一行是按“%f”输出的双精度浮点数;

第二行是按“%f”保留5位小数输出的双精度浮点数;

第三行是按“%e”输出的双精度浮点数;

第四行是按“%g”输出的双精度浮点数。

【输入样例】

12.3456789

【输出样例】

12.345679

12.34568

1.234568e+001

12.3457

 

【来源】


No

源码:

#include <cstdio>

int main()

{

double a;

scanf("%lf", &a);

printf("%lf\n%.5lf\n%e\n%g", a, a, a, a);

return 0;

}

### C++ 信息学奥赛一本 1465 剪花布条 解题思路 对于题目描述中的剪花布条问题,在处理较小规模的子串时,可以采用栈来辅助解决。当面对较短的字符串模式匹配或相似操作时,利用栈结构能够简化逻辑并提高效率[^1]。 具体来说,该类问题常涉及两个主要部分: - **预处理阶段**:过构建某种数据结构(如KMP算法中的next数组),使得后续查询更加高效。 - **匹配过程**:遍历目标字符串的同时维护一个指针指向当前正在比较的位置;每当遇到不匹配的情况,则依据预先计算好的跳转表调整位置继续尝试匹配下一个可能的位置。 然而针对此特定编号下的编程挑战,更推荐使用哈希函数配合滑动窗口技术来进行快速求解。这种方法不仅适用于较长文本上的多次询问场景,而且易于理解和编码实现。 #### 关键点分析 - 输入长度较大,直接暴力枚举所有可能性会超时; - 需要找到连续相同字符的最大数量作为答案输出; - 可以考虑用双端队列(deque)存储临时结果,并保持其单调性以便于实时更新最优解。 下面是基于上述讨论给出的一种可行方案及其对应的C++代码片段: ```cpp #include <iostream> #include <deque> using namespace std; int main() { string s; cin >> s; // 获取输入字符串 deque<int> dq; int maxLen = 0, currentCharCount = 0; for (char c : s) { if (!dq.empty() && dq.back() != c - 'A') { while(!dq.empty()) dq.pop_back(); // 清空不同字母后的序列 currentCharCount = 0; } ++currentCharCount; dq.push_back(c-'A'); maxLen = max(maxLen, currentCharCount); } cout << "最大连续相同的字符数:" << maxLen << endl; } ``` 这段程序实现了对给定字符串中连续相等字符数目统计的功能。它采用了双向队列`deque`保存最近一次出现的不同字符之前的全部重复项,从而可以在O(n)时间内完成整个任务的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值