题目:http://codeforces.com/contest/676/problem/B
题意:有一个这样的杯子,第i层有i个杯子,从第一层开始倒酒,每秒倒出一杯的容量,问n层的杯子t秒有多少杯子“full”
思路:对于每个杯子模拟,第一个杯子放t杯酒,如何大于1,count++,然后每次除了原来的1,都向下流
代码:
#include<bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
double a[15][15];
int main()
{
int n,t;
cin >> n >> t;
int sum = 0;
a[1][1] = t;
for(int i = 1;i <= n;i++)
for(int j = 1;j <= i;j++)
{
if(a[i][j] > 1-eps)
{
sum++;
double cnt = a[i][j]-1;
a[i][j] = 1;
a[i+1][j] += cnt / 2;
a[i+1][j+1] += cnt/2;
}
}
cout << sum << "\n";
return 0;
}