NC234809. 牛牛的身高
描述
牛牛:“你低我 4.86 厘米,四舍五入后就是 4.9 厘米,再四舍五入后就是 5 厘米,再四舍五入后就是 10 厘米!”
输入描述
第一行一个整数 代表案例组数。接下来 行每行一个整数 代表牛牛的身高(适当放大后)。保证:
输出描述
输出共 行,每行一个正整数代表牛牛四舍五入最大化自己的身高后的结果。
示例1
输入:
5 1 2038 99999 13453 32921
输出:
1 2040 100000 14000 33000
说明:
Go 解法, 执行用时: 16ms, 内存消耗: 980K, 提交时间: 2023-08-11 09:49:20
package main import "fmt" func RoundUp(num int, carry int) (int, int) { //fmt.Println(num, carry) cuCarry := 0 current := 0 if num%10+carry >= 5 { cuCarry = 1 current = 0 } else { current = num%10 + carry } if num/10 > 0 { nextR, nextCarry := RoundUp(num/10, cuCarry) if nextCarry == 0 { return nextR*10 + current, cuCarry } return nextR * 10, nextCarry } return cuCarry*10 + current, cuCarry } func main() { for { num := 0 n, _ := fmt.Scan(&num) if n == 0 { break } else { data := make([]int, num) for i := 0; i < num; i++ { _, _ = fmt.Scan(&data[i]) } for i := 0; i < num; i++ { ret, _ := RoundUp(data[i], 0) fmt.Println(ret) } } } }
Python3 解法, 执行用时: 61ms, 内存消耗: 4604K, 提交时间: 2023-08-11 09:48:34
for j in range(int(input())): x = int(input()) for i in range(len(str(x))): y = 10**(i+1) if int( x / y * 10 % 10) > 4: x = int((x+y) / y) * y print(x)
Java 解法, 执行用时: 168ms, 内存消耗: 16192K, 提交时间: 2023-08-11 09:47:24
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); for (int ii = 0; ii < n; ii++) { int m = in.nextInt(); int a = 10; if (m < 10) { if (m >= 5) { m = 10; } } else { while (m / a != 0) { int ans = m % a; if (ans * 10 / a >= 5) { m = m - ans + a; } a *= 10; } } if ( m*10/a >= 5) m=a; System.out.println(m); } } }