A题:
n个X型,,简单点来说就是两条线段。。题意就是2n条线段最多可以将平面分成几块部分 ,
#include<stdio.h>
int main()
{
long long int a;scanf("%lld",&a);
printf("%lld",1+(1+2*a)*a);
}
B题:
第一问根据数学期望定义求一下,第二问枚举是否被点燃,滚动数组。。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<stack>
#include<list>
#include<map>
#include<set>
#include<vector>
typedef long long int ll;
const int maxn =100000+10;
const int mod =1e9+7;
const int INF=0x3f3f3f3f;
using namespace std;
ll gcd(ll a,ll b)
{
return b==0? a:gcd(b,a%b);
}
int main()
{
int n,k;scanf("%d%d",&n,&k);
double a[maxn];double ans=0;
a[0]=1;
for(int i=1;i<=n;i++)
{
double p;
cin>>p;ans+=p;
for(int j=k;j>=1;j--)
a[j]=a[j]*(1-p)+a[j-1]*p;
a[0]*=(1-p);
}
printf("%.4f\n",ans);
printf("%.4f\n",a[k]);
return 0;
}