等级之题N2&N1(8.3)题解

等级之题N2(8.3)

题目传送门

等级之题N2(8.3)

思路

很明显的推公式:
首先根据题目很容易就可以得出这个公式

( π r 1 2 + π r 2 2 ) + 2 S = π ( r 1 + r 2 ) 2 (πr_1^2+πr_2^2)+2S=π(r_1+r_2)^2 (πr12+πr22)+2S=π(r1+r2)2

然后化简为

r = r 1 + r 2 = 2 ∗ ( S π ) 1 2 r=r_1+r_2=2*(\frac{S}{π})^\frac{1}{2} r=r1+r2=2(πS)21

代码

#include<cmath>
#include<cstdio>
#include<iostream>
const double pi = acos(-1.0);
using namespace std;
int main(){
    double s;
    cin>>s;
    printf("%.3lf\n", 2*sqrt(s/pi));
    return 0;
}

等级之题 N1(8.3)

题目传送门

等级之题 N1(8.3)

思路

又是很明显的求递推公式
一共需要考虑三种情况(假设x为当前期望,y为下次期望)
1、黑球加一
放黑球,拿蓝球
概率:

( n + m + 1 − x − 1 ) n + m + 1 \frac{(n+m+1−x−1)}{n+m+1} n+m+1(n+m+1x1)

2、黑球减一
放蓝球,拿黑球
概率:

( 1 − p ) ∗ x n + m + 1 \frac{(1−p)∗x}{n+m+1} n+m+1(1p)x

3、黑球不变
放蓝球,拿蓝球

n + m + 1 − x n + m + 1 \frac{n+m+1−x}{n+m+1} n+m+1n+m+1x

放黑球,拿黑球

x ] + 1 n + m + 1 \frac{x]+1}{n+m+1} n+m+1x]+1

所以可以求得下次的期望为

y = ( x + p ) n + m n + m − 1 y=(x+p)\frac{n+m}{n+m-1} y=(x+p)n+m1n+m

最后化简得

( b n − a n − a m ) ( n + m ) k + a ( n + m ) ( n + m + 1 ) k b ( n + m + 1 ) k \frac{(bn−an−am)(n+m)^k+a(n+m)(n+m+1)^k}{b(n+m+1)^k} b(n+m+1)k(bnanam)(n+m)k+a(n+m)(n+m+1)k

所以直接计算该公式即可,对于分母用逆元计算

代码

#include<cstdio>
#include<iostream>
using namespace std;
// #define TDS_ACM_LOCAL
#define ll long long 
const int mod=1e9+7;
ll n, m, k, a, b;
ll quick_pow(ll a, ll b)
{ 
	ll res = 1;
	while (b)
	{
		if (b & 1)
			res = res * a % mod;
		a = a * a % mod;
		b >>= 1;
	}
	return res;
}

void solve(){
    cin>>n>>m>>k>>a>>b;
    ll x=(((((b*n)%mod -(a*n)%mod -(a*m)%mod)+mod)%mod *quick_pow(n+m, k))%mod +((a*(n+m)%mod)%mod *quick_pow(n+m+1, k))%mod)%mod;
    ll y=(b*quick_pow(n+m+1, k))%mod;
    y=quick_pow(y,mod-2);
    cout<<x*y%mod<<endl;
    return ;
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
#ifdef TDS_ACM_LOCAL
    freopen("D:\\VS code\\.vscode\\testall\\in.txt", "r", stdin);
    freopen("D:\\VS code\\.vscode\\testall\\out.txt", "w", stdout);
#endif
    solve();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值