题目背景 小 g 参加一场考试时,不小心把答题卡填反了。 题目描述 答题卡有 n(1≤n≤109)行,m(1≤m≤109)列,共 nm 道题,从左到右,从上到下,横向排列。 每道题有 c(4≤c≤109) 个选项。其中,前 k(0≤k≤nm) 道题为单选题,有且仅有一个正确选项;后 nm-k 道题为多选题,正确选项个数严格大于 1 且严格小于 c。 小 g 正确地回答了所有题,但是她不小心把答题卡的方向看反了,从而她的答案排列方式为从上到下,从左到右,纵向排列。 题目的评分方式为:选项完全正确得 1 分,多选或错选得 0 分,漏选按比例给分。 形式化地说,若 A 为某道题正确答案选项的集合,B 为答题卡上选项的集合(均为 {1,2,3,...,c} 的子集),则该题得分为: {∣B∣/∣A∣if B⊆A {0 otherwise 小 g 忘记考试的正确答案是什么了,于是她去问小 f,如果考试的正确答案在合法范围内等概率随机,那么自己期望得分是多少。由于结果可能很大,她只需要知道结果对 1e9+7 取模的值。 题目保证 c 和 2^c-c-2 都不是 1e9+7 的倍数。 但是小 f 也不会,所以他来求助万能的你。 输入格式 一行,四个用空格分隔的整数 n,m,k,c,分别表示答题卡的行数,列数,单选题的数量和每道题的选项个数。 输出格式 一行,一个整数,表示期望得分,对 1e9+7 取模。
时间: 2024-04-22 14:27:50 浏览: 14
对于这道题,我们需要计算小 g 的期望得分对 (1e9+7) 取模的值。
首先,我们可以计算出单选题的数量为 k,多选题的数量为 nm-k。
接下来,我们需要计算每道题的得分情况。
对于单选题,得分为 1,所以总得分为 k。
对于多选题,我们需要考虑每个选项的情况。假设每道多选题有 x 个正确选项,则得分为 ∣B∣/∣A∣,其中 ∣B∣ 表示小 g 在这道题上选择了多少个选项,∣A∣ 表示这道题的正确选项个数。
根据题目描述,多选题的正确选项个数严格大于 1 且严格小于 c。所以我们可以假设每道多选题有一个正确选项,即 x=1。这样我们可以将得分简化为 ∣B∣。
接下来,我们需要计算 ∣B∣ 的期望值。由于小 g 是随机选择答案,所以每个选项被选择的概率都是相等的,即 1/c。因此,∣B∣ 的期望值为 (nm-k)/c。
综上所述,小 g 的总得分为 k + (nm-k)/c。最后,我们将得分对 (1e9+7) 取模,并输出结果。
代码示例:
```python
n, m, k, c = map(int, input().split())
score = (k + (n*m - k) // c) % (10**9 + 7)
print(score)
```
希望对你有所帮助!
相关问题
题目背景 小 g 参加一场考试时,不小心把答题卡填反了。 题目描述 答题卡有 n(1≤n≤109)行,m(1≤m≤109)列,共 nm 道题,从左到右,从上到下,横向排列。 每道题有 c(4≤c≤109) 个选项。其中,前 k(0≤k≤nm) 道题为单选题,有且仅有一个正确选项;后 nm-k 道题为多选题,正确选项个数严格大于 1 且严格小于 c。 小 g 正确地回答了所有题,但是她不小心把答题卡的方向看反了,从而她的答案排列方式为从上到下,从左到右,纵向排列。 题目的评分方式为:选项完全正确得 1 分,多选或错选得 0 分,漏选按比例给分。 形式化地说,若 A 为某道题正确答案选项的集合,B 为答题卡上选项的集合(均为 {1,2,3,...,c} 的子集),则该题得分为: {∣B∣/∣A∣if BA {0 otherwise 小 g 忘记考试的正确答案是什么了,于是她去问小 f,如果考试的正确答案在合法范围内等概率随机,那么自己期望得分是多少。由于结果可能很大,她只需要知道结果对 1e9+7 取模的值。 题目保证 c 和 2^c-c-2 都不是 1e9+7 的倍数。 但是小 f 也不会,所以他来求助万能的你。 输入格式 一行,四个用空格分隔的整数 n,m,k,c,分别表示答题卡的行数,列数,单选题的数量和每道题的选项个数。 输出格式 一行,一个整数,表示期望得分,对 1e9+7 取模。
根据题目描述,我们需要求出小 g 的期望得分对 (1e9+7) 取模的值。首先,我们需要确定单选题和多选题的数量。
单选题的数量为 k,多选题的数量为 nm-k。接下来,我们需要确定每道题的得分。
对于单选题,得分为 1,所以总得分为 k。
对于多选题,我们需要考虑每个选项的情况。假设每道多选题有 x 个正确选项,则得分为 ∣B∣/x,其中 ∣B∣ 表示小 g 在这道题上选择了多少个选项。
因此,我们需要计算 ∣B∣ 的期望值。由于小 g 是随机选择的答案,所以每个选项被选择的概率都是相等的,即 1/c。由于每道多选题有 nm-k 个,所以 ∣B∣ 的期望值为 (nm-k)/c。
综上所述,小 g 的总得分为 k + (nm-k)/c。最后,我们将得分对 (1e9+7) 取模,并输出结果。
代码示例:
```python
n, m, k, c = map(int, input().split())
score = (k + (n*m - k) // c) % (10**9 + 7)
print(score)
```
希望能对你有所帮助!
x683 蚂蚁 难度:时间限制:1s 内存限制:256m尚未作答开始答题题目描述有n蚂蚁在长
一开始,我们假设所有蚂蚁朝着同一个方向移动。如果两只蚂蚁相遇,它们会绕着对方继续移动,而不会改变自己的方向。我们可以将这些蚂蚁看做是穿着颜色不同的衣服,这样我们就可以观察到它们的移动情况。不过,在现实生活中,蚂蚁们的移动方向是随机的,所以我们可以将所有蚂蚁的移动方向都设定为同一个。
如果我们记录下每只蚂蚁的初始位置和移动速度,并且转换为以最慢蚂蚁的速度为参照的坐标系,那么我们可以将问题转化成所有蚂蚁在同一条直线上移动的问题。因此,我们只需要考虑蚂蚁在同一直线上相遇的情况,而不需要考虑不同直线上蚂蚁的相遇情况。
除此之外,我们可以通过计算出每只蚂蚁到达端点的时间来确定它们的相遇情况。有时候蚂蚁们会在端点相遇,有时候它们会在中途相遇。不过,不管怎样,我们都可以通过初始位置和移动速度的关系来计算出它们的相遇时间。
总的来说,我们需要找出所有蚂蚁相遇的情况,并且确定它们相遇的位置和时间。最后,我们再根据初始条件,来确定哪些蚂蚁会在端点相遇。