https://www.luogu.org/problem/P1984、
类似这种题,n数据比较大且输出比较简单都可以从找规律去想。其实就是一个贪心的思想
把一杯水的温度升高t℃所需的能量为(4200*t/n)J
第一杯水a1:花100度
第二杯水a2:花50度 =1/2 *a1
第三杯水a3:花37.5度 = 3/4*a2
第四杯a4:花31.25度 = 5/6*a3
规律:a_(n)=(2*(n-1)-1)/(2*(n-1))*a_(n-1)
#include <algorithm> #include <iostream> #include <cstdio> using namespace std; #define INF 0x3f3f3f3f; const int MAXN=230; int n,m; #define typec long long int main(){ int n; cin>>n; double t,ans; t=ans=(double)4200*100/n; //cout<<"t:"<<t<<endl; for(int i=1;i<n;i++){ t=(double)t*(2*i-1)/(2*i); ans+=t; } printf("%.2lf\n",ans); }