zoukankan      html  css  js  c++  java
  • 洛谷1984 [SDOI2008]烧水问题

    一道找规律

    原题链接

    显然要将烧得的温度最大化利用,即每次都去热传递。
    设水沸腾为(x)
    第一杯直接烧水,需提高(x)
    第二杯先与第一杯进行热传递,这样只需提高(dfrac{x}{2}),是上一杯的(dfrac{1}{2})倍。此时两杯温度为(dfrac{x}{2},x)
    第三杯先与第一杯进行热传递,再与第二杯进行热传递,需提高(x-dfrac{dfrac{frac{x}{2}}{2}+x}{2}=dfrac{3x}{8}),是上一杯的(dfrac{3}{4})倍。此时三杯温度为(dfrac{x}{4},dfrac{5x}{8},x)
    第四杯同理,需提高(x-dfrac{dfrac{dfrac{frac{x}{4}}{2}+dfrac{5x}{8}}{2}+x}{2}=dfrac{5x}{16}),是上一杯的(dfrac{5}{6})倍。
    (cdots)
    即第(n)杯是第(n-1)杯的(dfrac{2 imes(n-1)-1}{2 imes(n-1)})倍。
    其实手算几杯找到规律就好

    #include<cstdio>
    using namespace std;
    int main()
    {
    	int n, i;
    	double s = 100, la = 100;
    	scanf("%d", &n);
    	for (i = 1; i < n; i++)
    	{
    		la *= 1.0*((i << 1) - 1) / (i << 1);
    		s += la;
    	}
    	printf("%.2f", 4200 * s / n);
    	return 0;
    }
    
  • 相关阅读:
    第一次作业(2)
    第0次作业(2)
    最后一次作业—总结报告
    第八次作业
    第七周作业
    第六周作业
    第四周作业
    第4次作业
    2018c语言第3次作业
    2018c语言第2次作业
  • 原文地址:https://www.cnblogs.com/Iowa-Battleship/p/9614685.html
Copyright © 2011-2022 走看看