列表

详情


NC234862. 牛牛的装球游戏

描述

牛牛:“生活处处是惊喜,比如说这道题就是一个惊喜?!”
牛牛有一堆(无数个)半径为  的球,它还有一个底面半径为  高为  的圆柱体,现在它想知道,当圆柱体内放满球(最上方球的最高点不能超出圆柱体)时圆柱体内的剩余体积是多少?
ps:这里 取 3.141592653589 。

输入描述

第一行一个整数  代表案例组数。
接下来  行每行两个整数分别代表  和  。

输出描述

共  行。
每行一个小数(保留且只保留小数点后三位)代表剩余体积四舍五入后的结果。

示例1

输入:

3
5 3
2 5
2 2

输出:

235.619
29.322
25.133

原站题解

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

Java 解法, 执行用时: 76ms, 内存消耗: 11316K, 提交时间: 2023-08-10 10:17:59

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        double pi=3.141592653589;
        int t = in.nextInt();
        while (t-- > 0) {
            int r=in.nextInt();
            int h=in.nextInt();
            int s = h / (2 * r);
            double w=pi*r*h*r-s*pi*r*r*r*4/3;
            System.out.printf("%.3f",w);
            System.out.println();
        }
    }
}

Go 解法, 执行用时: 4ms, 内存消耗: 948K, 提交时间: 2023-08-10 10:16:40

package main

import (
	"fmt"
	"math"
)

const pi = 3.141592653589

func main() {
	var r, h float64
	var T int
	fmt.Scanln(&T)
	for i := 0; i < T; i++ {
		fmt.Scanln(&r, &h)
		var s1 float64
		s1 = pi * r * r * h
		var cc float64 = math.Floor(h / (2 * r))
		// fmt.Println(cc)
		fmt.Printf("%.3f\n", s1-cc*((4.0/3.0)*pi*r*r*r))
	}
}

PHP 解法, 执行用时: 10ms, 内存消耗: 3032K, 提交时间: 2023-08-10 10:15:19

<?php

$pi = 3.141592653589;
$n = intval(fgets(STDIN));
for($i = 0; $i < $n; $i++) {
    $arr = explode(' ', fgets(STDIN));
    $r = intval($arr[0]);
    $h = intval($arr[1]);
    $s = $pi * $r * $r * $h;
    $nb = intval($h / 2 / $r);
    $sb = $nb * 4 * $pi * $r * $r * $r / 3;
    echo sprintf("%.3f\n", $s - $sb);
}

Python3 解法, 执行用时: 44ms, 内存消耗: 4548K, 提交时间: 2023-08-10 10:10:36

PI = 3.141592653589
n = int(input())
for i in range(n):
    r, h = map(int, input().split())
    # 圆柱体的体积
    s = PI * r * r * h
    # 可以放球的个数, 球的体积
    nb = h // (2*r)
    sb = nb * 4 * r * r * r * PI / 3
    print('{:.3f}'.format(s - sb))

上一题