[原創題]做個問卷調查 - 提示、題解
GuguGagaOJ #8 做個問卷調查
[原創題]做個問卷調查 - 提示、題解
題目簡介
發下$N_A$份正面問卷、$N_B$份反面問卷,透過了解回應比例計算真實狀況。
提示
推薦打開之後想想看再繼續,不要一次使用全部
提示1
這好像是數學題?如果在數學考試你會怎麼做?
提示2
有哪些人會回答「是」?
題解
點開會有完整解答,請想過後再開喔
思路
透過輸入資料,我們會看到兩種人回答「是」,假設實際「是」比例為$p$
- 抽到正面問卷的人中,實際為是的人:$N_A \times p$人
- 抽到反面問卷的人中,實際為否的人:$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
授權