列表

详情


NC200315. L-危险的台阶

描述

圣杯,虽然表面上被称作万能愿望机,但已经失去了原本的光华。污秽不堪的黑泥已经染指了圣杯,还是说,这些黑泥出自圣杯本身呢。这些并不应该在面对一个暴乱的圣杯的时候去思考。
「格蕾」
「是,亚德!」格蕾从右手处拉出装着亚德的鸟笼
「直接进入解除封印阶段吧」
「欸」格蕾对我的指令似乎有所迟疑,但还是相信我的决定「我明白了,但是周围的魔力被不断的摄取固化了」
「用这个」我拿出之前获得的钥匙,那是王之键,是王之宝库的钥匙。虽然正常情况下没有办法使用,但是现在的情况已经足够不正常了。
要打开王之宝库除了英雄王本人,还有一种办法就是对王之键进行魔力供给。虽然实际情况很复杂,但是我还是想到了一个很简单的物理模型。就好像在悬崖上有n块长度均为L,重量均为m而且质量分布均匀的石板。要把石板用台阶式的堆叠方式,延伸出去。在任何一块石板都不会掉落悬崖的情况下,尽可能的使石板的最右端远离悬崖边缘。此时石板最右端和悬崖边缘的距离就是我需要进行魔力供给的量。

输入描述

第一行输入三个正整数,包括石板个数n(1<=n<=105),石板长度L(1<=L<=109),石板质量m(1<=m<=109)

输出描述

输出最右那一块石板的最右端距离悬崖边缘的最大距离(保留四位小数)

示例1

输入:

1 1 1

输出:

0.5000

原站题解

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

C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 496K, 提交时间: 2019-12-07 21:52:06

#include<bits/stdc++.h>
using namespace std;
int main(){
	double n,m,x;
	cin>>n>>m>>x;
	double p=0;
	for(int i=1;i<=n;i++){
		p+=(double)1/i;
	}
	printf("%.4f",p*m/2);
}

C(clang11) 解法, 执行用时: 2ms, 内存消耗: 384K, 提交时间: 2020-12-04 19:43:37

#include<stdio.h>
int main()
{
	double n,x,m,i,t=0,y=2,z;
	scanf("%lf%lf%lf",&n,&x,&m);
    z=x/2;
	for(i=0;i<n;i++,z=x/y){
	t=t+z;
    y=y+2;}
	printf("%.4lf",t);
}

C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 504K, 提交时间: 2019-12-07 22:56:05

#include<cstdio>
int main(){
	int n;
	double l,m,ans=0;
	scanf("%d%lf%lf",&n,&l,&m);
	for(int i=1;i<=n;++i){
		ans+=l/(2*i);
	}
	printf("%.4lf",ans);
	return 0;
}

Python3(3.5.2) 解法, 执行用时: 53ms, 内存消耗: 3548K, 提交时间: 2019-12-07 21:37:21

n, l, m = map(int, input().split())
d = 0.5
for i in range(1, n):
    d += 0.5 / (i + 1)
print('%.4f' % (d * l))

Ruby(2.4.2) 解法, 执行用时: 66ms, 内存消耗: 4588K, 提交时间: 2019-12-07 22:57:30

N, L, M = gets.split.map(&:to_i)
ans = 0
N.times do |n|
	ans += L.to_f / (2 * n + 2)
end
printf "%.4f\n", ans

pypy3(pypy3.6.1) 解法, 执行用时: 87ms, 内存消耗: 18916K, 提交时间: 2019-12-07 22:41:54

n,l,m=map(int,input().split())
ans=0
for i in range(1,n+1):
    ans+=1/i
print("%.4f"%(ans*l/2))
    

上一题