zoukankan      html  css  js  c++  java
  • zzuli2460: 楼上真的是签到题

    http://acm.zzuli.edu.cn/problem.php?id=2460

    题目描述


            俗语说,美酒虽好,不要贪杯哦。今天我们的小博开始对美酒产生了兴趣,准确点说是倒酒:他拿来一堆酒杯,把他们摆成了金字塔形状,第一层一个,第二层两个,第三层三个。。。第n层n个,形状如图所示:
                                                           
    然后小博搬来很多箱箱82年的红酒(小博是位土豪),开始从金字塔顶层开始倒酒
    已知每秒钟倒出的酒量正好能装满一杯,当一个酒杯注满酒后,酒就会顺着被子流下来,并均匀地分向下一层的两个酒杯。
    如果最底层的酒杯注满了,酒会顺着杯子流到桌子上。为了方便起见,这里不考虑酒在流的过程中停留在杯沿的部分和挥发的部分,并假设酒的流速是足够快的。
    现在,小博想知道,如果他在t秒后停止倒酒,金字塔中会有多少个已经被注满的酒杯?

    输入

    测试数据有多组,每个测试数据占一行
    对于每组测试数据,一行两个整数 n 和 t (1≤n≤10,0≤t≤10000),分别表示金字塔n层  和   倒酒时间为t秒

    输出

    对于每组测试数据,输出t秒后处于满的状态的酒杯数量。输出占一行。

    样例输入

    3 5
    3 7

    样例输出

    4
    6
    
    #include<stdio.h>
    #include<string.h>
    #define N 20
    double a[N][N];
    int main()
    {
    	int n,i,j,t,ans;
    	while(scanf("%d%d",&n,&t)!=EOF)
    	{
    		memset(a,0,sizeof(a));
    		ans=0;
    		a[1][1]=t;
    		for(i=1;i<=n;i++)
    			for(j=1;j<=i;j++)
    			{
    				a[i+1][j]+=(a[i][j]-1)/2.0;
    				a[i+1][j+1]+=(a[i][j]-1)/2.0;
    			}
    		for(i=1;i<=n;i++)
    			for(j=1;j<=i;j++)
    				if(a[i][j]>=1)
    					ans++;
    		printf("%d
    ",ans);		
    	}
    	return 0;
    }
  • 相关阅读:
    无言
    计算机网络的所有课件
    Linux 分区
    Linux 文件管理权限
    DropDownList 控件
    CssClass初步语法了解
    BulletedList用途
    BulletedList项目控件基础CSS基础
    Checkbox与foreach循环
    RadioButton控件
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/11852840.html
Copyright © 2011-2022 走看看