【P1984 [SDOI2008]烧水问题】找规律

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);
}

 

posted @ 2019-09-19 17:18  saaas  阅读(114)  评论(0)    收藏  举报