CSP202605A 银行家舍入

CSP202605A 银行家舍入
小 P 的实验表格里有n个形如xxx.x的、保留一位小数的非负实数其中小数点前的xxx表示整数部分a为任意非负整数小数点后的x表示小数部分b为一位数字取值0-9a可以是任意位数如2026、531或0b必为一位且当b0时不会省略如13.0。为方便统计分析小 P 想将它们都近似为整数具体定义两种计算方式。四舍五入法当0≤b≤4时向下舍去结果为a当5≤b≤9时向上进位结果为a1。银行家舍入法向偶数舍入当b≠5时处理与四舍五入法一致b≤4向下b≥6向上。当b5时由于a0.5与相邻整数a和a1的距离相同为避免系统性偏差向偶数舍入若a为偶数则结果为a否则结果为a1。现给出小P表格中的n个实数格式如上。对每个实数分别计算上述两种方法的取整结果。#include bits/stdc.h using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n; cinn; int a,b; char dot; vectorint ans1,ans2; for(int i0;in;i){ cinadotb; int a1b4?a:a1; int a2; if(b!5) a2a1; else a2a%20?a:a1; ans1.push_back(a1); ans2.push_back(a2); } for(int i0;in;i){ if(i) cout ; coutans1[i]; } coutendl; for(int i0;in;i){ if(i) cout ; coutans2[i]; } return 0; }这是道很简单的题目值得注意的点是ios::sync_with_stdio(false); cin.tie(nullptr);关掉cin/cout和stdioscanf/printf的同步并把cin和它绑定的输出流解绑让cin/cout跑得跟scanf/printf一样快。不用scanf/printf是不用写格式符太麻烦了这个方法能使用更方便的cin/cout。1.ios::sync_with_stdio(false);C 中为了能混用cin/cout和scanf/printf会把它们绑定到同一套缓冲区每次 I/O 都要做同步检查代价很大。这个语句使得cin/cout不再跟scanf/printf同步速度大幅提升接近scanf/printf。2.cin.tie(nullptr);cin 和 cout 是绑定的——每次执行 cin 之前会自动调用 cout.flush()把缓冲区里的东西先输出出去。这个语句解绑cin和cout不再每次cin前自动flush。