NC200369. 四舍五入
描述
输入描述
输入的第一行包含两个整数n和t(,)表示小数(含小数点)的长度以及四舍五入的次数。
第二行为一个字符串表示qdgg的初始分数。
输出描述
一行表示qdgg能得到的最高分数(请勿输出尾零)
示例1
输入:
6 1 10.245
输出:
10.25
示例2
输入:
6 2 10.245
输出:
10.3
说明:
注意10.30被认为是错的示例3
输入:
3 100 9.2
输出:
9.2
Python3 解法, 执行用时: 46ms, 内存消耗: 7560K, 提交时间: 2023-03-31 10:17:14
n, t = map(int, input().split()) a = input() try: a1,a2 = a.split('.') l = len(a1) a1 = int(a1) f = False while t: if a2[0] >='5': a1 +=1 f = True break for i in range(len(a2)): if int(a2[i] )>= 5: a2 = a2[:i-1]+str(int(a2[i-1])+1) t -= 1 break else: break if f: print(a1) else: print(str(a1)+'.'+a2) except: print(a)
C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 472K, 提交时间: 2023-05-13 09:25:35
#include<bits/stdc++.h> using namespace std; int main() { int n,t; string a; cin>>n>>t>>a; int x=a.find('.'); if(x==-1) { cout<<a; return 0; } for(int i=x+1;i<a.size();i++) { if(a[i]>='5') { a.erase(i); i--,t--; while(a[i]=='4'&&t) { a.erase(i); i--,t--; } if(a[i]=='.') { a.erase(i); i--; while(a[i]=='9') { a[i]='0'; i--; } if(i==-1) cout<<1; else a[i]++; } else a[i]++; } } cout<<a; }
C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 432K, 提交时间: 2023-01-16 01:11:18
#include<bits/stdc++.h> using namespace std; int main(){ string a; int n,t,p; cin>>n>>t>>a; p=a.find('.'); if(p==-1){ cout<<a;return 0; } for(int i=p+1;i<a.size();i++){ if(a[i]>='5'){ a.erase(i);i--;t--; while(a[i]=='4'&&t){ a.erase(i);i--;t--; } if(a[i]=='.'){ a.erase(i);i--; while(a[i]=='9'){ a[i]='0';i--; } if(i==-1)cout<<1; else a[i]++; } else a[i]++; } } cout<<a; return 0; }