找规律的题让我非常头疼。。。
首先我猜想的规律是每一次加热然后给后面那一杯加热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;
}