发电机感觉!!! - 组合数学 - 概率

题目大意:给你一段圆弧,对应弧度不小于 3 2 π \frac32\pi 23π,然后在这个弧上随机选择 n − 1 n-1 n1个点,求着 n − 1 n-1 n1个点和弧的两端点形成的凸包包含圆心的概率。 n ≤ 1 0 7 n\le10^7 n107
题解:
考虑推式子……一种推法是把弧切均分成k段,然后求一个答案然后另k足够大取极限(其实就是求导),场上这么玩的。
另一种方法就是仍然考虑计算不合法的,枚举哪一段大于 π \pi π了,然后相当于剩下的点都在删掉这 π \pi π的弧长之后随意选择。
然后没了。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define Rep(i,v) rep(i,0,(int)v.size()-1)
#define mod 998244353
#define lint long long
#define ull unsinged lint
#define db long double
#define pb push_back
#define mp make_pair
#define fir first
#define sec second
#define gc getchar()
#define debug(x) cerr<<#x<<"="<<x
#define sp <<" "
#define ln <<endl
using namespace std;
typedef pair<int,int> pii;
typedef set<int>::iterator sit;
inline int inn()
{
    int x,ch;while((ch=gc)<'0'||ch>'9');
    x=ch^'0';while((ch=gc)>='0'&&ch<='9')
        x=(x<<1)+(x<<3)+(ch^'0');return x;
}
inline int fast_pow(int x,int k,int ans=1) { for(;k;k>>=1,x=(lint)x*x%mod) if(k&1) ans=(lint)ans*x%mod;return ans; }
int main()
{
    int t=inn(),n=inn()-1;
    int ans=(1-(lint)n*fast_pow((180ll-t)*fast_pow(360-t,mod-2)%mod,n-1)%mod+mod)%mod;
    return !printf("%d\n",ans);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值