文章

[原創題]做個問卷調查 - 提示、題解

GuguGagaOJ #8 做個問卷調查

[原創題]做個問卷調查 - 提示、題解

題目簡介

發下$N_A$份正面問卷、$N_B$份反面問卷,透過了解回應比例計算真實狀況。

提示

推薦打開之後想想看再繼續,不要一次使用全部

提示1

這好像是數學題?如果在數學考試你會怎麼做?

提示2

有哪些人會回答「是」?

題解

點開會有完整解答,請想過後再開喔

思路

透過輸入資料,我們會看到兩種人回答「是」,假設實際「是」比例為$p$

  1. 抽到正面問卷的人中,實際為是的人:$N_A \times p$人
  2. 抽到反面問卷的人中,實際為否的人:$N_B \times (1-p)$人

可以列出等式

\[Y = N_A \times p + N_B \times (1-p)\] \[\Rightarrow Y = N_Ap + N_B - N_Bp\] \[\Rightarrow Y = (N_A - N_B)p + N_B\] \[\Rightarrow (N_A - N_B)p = Y - N_B\] \[\Rightarrow p = \frac{Y - N_B}{N_A-N_B}\]

因為保證整除,所以只要正常輸入輸出即可。注意使用1.0*來將數字轉換成浮點數。

完整程式碼

請注意,本程式碼僅供寫法上參考,直接複製貼上程式碼會導致你學不到任何東西

C++ 範例程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
#define raymondwengcode ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
using namespace std;
int main() {
    raymondwengcode;

    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        int na, nb, Y, N;
        cin >> na >> nb >> Y >> N;
        cout << (1.0*(Y-nb)/(na-nb)) << "\n";
    }

    return 0;
}
Python 範例程式碼
1
2
3
4
5
6
for _ in range(int(input())):
    na, nb, y, n = map(int, input().split())
    if((y-nb)/(na-nb) == 0):
        print(0)
        continue
    print((y - nb) / (na - nb))
本文章以 CC BY 4.0 授權

© Raymond Weng. 保留部份權利。

全站總字數: 21282 字

載入中...

本網站使用 Jekyll 產生,採用 Chirpy 主題