列表

详情


NC234809. 牛牛的身高

描述

牛牛:“你低我 4.86 厘米,四舍五入后就是 4.9 厘米,再四舍五入后就是 5 厘米,再四舍五入后就是 10 厘米!”

我们知道,牛牛很在意自己的身高,所以他想请你帮忙求一下他的身高四舍五入后的最大值是多少,为了简化问题,我们认为牛牛的身高是一个正整数。
“四舍五入”:这里的意思是可以以任何顺序在任意位进行任意次四舍五入,比如有:14861 -> 14900 -> 15000 -> 20000 。

输入描述

第一行一个整数 T 代表案例组数。
接下来 T 行每行一个整数 n 代表牛牛的身高(适当放大后)。
保证:

输出描述

输出共 T 行,每行一个正整数代表牛牛四舍五入最大化自己的身高后的结果。

示例1

输入:

5
1
2038
99999
13453
32921

输出:

1
2040
100000
14000
33000

说明:

对于 13453 这个数据,变化是这样的:
13453 --> 13500
13500 --> 14000

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

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);
		}
	}
}

上一题