首页 > 抽卡
头像 Lambda_L
发表于 2026-04-08 00:28:01
Solution直接计算「至少抽到一张想要的卡」的概率非常复杂(需要分类讨论抽中 1 个、2 个...n 个的情况),因此我们用对立事件简化计算:目标概率 = 1 - 所有卡池都抽不到想要的卡的概率正难则反,思考对立事件的概率就很容易了,只需要将抽中不想要的卡的概率相乘就是结果了。分别计算分子,分母 展开全文
头像 憨憨的竹林
发表于 2026-04-08 00:58:00
这题其实挺简单的来着,前提是你掌握了前置知识 至少抽到一张自己想要的卡,等于1-每个卡池都抽不到自己想要的卡的概率 所以最后的答案就是[累乘a[i] - 累乘(a[i] - b[i])] / 累乘a[i],然后除法部分用费马小定理求个逆元就好了(正好模数是质数) #include <bits/ 展开全文
头像 AliLexiWalker
发表于 2026-04-08 00:57:31
先算全没中,再用一减掉。 每个池子没中是 ,全乘后取模就行。 void solve(){ int n;cin>>n; vll a(n),b(n); for(int i=0;i<n;++i)cin>>a[i]; for(int i=0;i& 展开全文
头像 飞鸢泛惊鸿
发表于 2026-04-08 11:42:53
这是一个概率问题,需要计算在每个卡池都单抽一次的情况下,至少抽到一张想要的卡的概率。由于是概率计算,且需要输出模意义下的结果,我们需要用组合数学和模运算的知识来解决。先想简单情况举个例子:池子1:3 种卡,你想要 1 种 → 抽一次,抽到你想要的概率是 1/3池子2:4 种卡,你想要 1 种 → 概 展开全文
头像 olone
发表于 2026-04-08 14:34:44
import java.util.*; public class Main{ static final long mod = 1000000007; static long qpower(long x, long y){ long res = 1; 展开全文
头像 戴饭碗
发表于 2026-04-09 16:59:02
import sys MOD = 10**9 + 7 def modinv(x): return pow(x, MOD-2, MOD) # 快速幂 def solve(): n = int(input()) a = list(map(int, input().spli 展开全文
头像 精神病科黄主任
发表于 2020-05-22 18:11:46
本着 正难则反的原则。容易知道求抽到的概率很麻烦。那么我们求反就好了,也就是求失败的概率。失败就是每次都抽不到。容易知道每次失败的概率就是然后进行累乘就好了。因为模数是质数,逆元可以用费马小定理得出。 最后成功的概率就是(1-ans+mod)%mod #include<bits/stdc++. 展开全文
头像 此在Dasein
发表于 2026-04-08 05:37:40
1. 问题建模 本问题的核心在于计算多个独立事件的并集概率。 由于直接计算“至少抽到一个想要的卡”的概率涉及包含排除原理(Inclusion-Exclusion Principle),随着 的增大,组合数项会呈指数级增长。因此,根据概率论的基本性质,计算其补集(余事件)是更优的策略。 概率模型 展开全文
头像 牛客69596014号
发表于 2026-04-08 08:04:49
import java.util.Scanner; public class Main { static long mod=(long)1e9+7; static long qpow(long a,long b){ long ans=1; a%=mo 展开全文
头像 chenlan114
发表于 2026-04-08 11:15:45
#include<bits/stdc++.h> using namespace std; using ll=long long; const ll mod=1e9+7; ll fast_pow(ll a,ll b,ll m){ ll res=1; a%=m; 展开全文