【题解】洛谷P1984 烧水问题(数学规律)

找规律的题让我非常头疼。。。

首先我猜想的规律是每一次加热然后给后面那一杯加热50度,这个想法太naive了,只能骗到18分,所以我们得想正解。

强行推规律吧。。消耗能量第一杯100J,第二杯50J,第三杯37.25J,问题可能集中在第四杯。

我们前三杯的情况是 25,(100+25)/2,100℃,现在我们要把第四杯弄到100℃,所以将前面的三杯从小到达和第四杯中和热量,就可以得到31.75了,然后递推下去的温度也知道了。

有了这些关系,我们就可以猜想前后的表达式了,然后可以得到结论。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstdlib>
using namespace std;
int n;

int main()
{
	scanf("%d",&n);
	double res=0;
	double ans=420000.00/n;
	for(int i=1;i<=n;i++)
	{
		res+=ans;
		ans*=(1-0.5/i);
	}
	printf("%.2lf",res);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Rem_Inory/article/details/81586641
今日推荐