2008年,那个被风吹过的夏天,恰同学少年的日子,青涩的年华,却再也回不去了...
我幸运地认识了你,或许是前世五百次的回眸~ 或许比这还多。
我们有时候都会去教室上晚自习,我们住在不同的宿舍(当然),然而,幸运的是,我们去上晚自习时都要经过校园里那个熟悉的路口,那个转角,
然而不幸的是,你我都不总是每天都去自习,我也鼓不起勇气,问你什么时候会去上自习,所以,我可能不可以每天都在那个路口遇到你,尽管我每次去上自习时,都会以最早的时间在那个路口等你最长的时间,所以我知道,只要我们同一天去自习,我就可以在那个转角的路口遇到你,然后上前对你说:“嗨,这么巧~”。
你只告诉过我,你一星期里有几天晚上会去自习,我想知道,我有多少概率会在那个转角遇到你。
一星期有7天(最多7次晚自习),给出我每天去不去上晚自习的情况,然后给出你一星期里上晚自习的天数m(0<=m<=7),假设你选择这7天里哪m天去上晚自习是等概率的,也就是说,你选择集合Set1:
Set1={D1,D2,…,Di,…,Dm}(1<=Di<=7,Di互不相同,1<=i<=m)
还是选择另一个和Set1不同的集合Set2:
Set2={B1,B2,…,Bi,…,Bm}(1<=Bi<=7,Bi互不相同,1<=i<=m)
作为去自习的日子是等概率的。
-
输入
-
多组测试数据,每组测试数据有两行。第一行有一个整数m(0<=m<=7)表示你一星期里去晚自习的天数,第二行有7个整数Qi(1<=i<=m,Qi=0,1),如果Qi为0,表示第i天我不去自习,否则(Qi=1),则表示第i天我回去自习。
输出
-
对每组测试数据输出一行,即我能遇到你的概率,保留3位小数。
样例输入
-
1
1 0 0 0 0 0 0
样例输出
-
0.143
数学题
#include<iostream> #include<iomanip> using namespace std; bool a[ 7 ]; bool b[ 7 ]; int sum; int s2; int m; void work( int k, int t ) { if ( t == m && k <= 7 ) { s2++; bool flag = false; for ( int i = 0; i < 7; i++ ) { if ( a[ i ] ==1 && b[ i ]== 1 ) { flag = true; } } if ( flag == false ) sum++; } else if ( k == 7 ) { } else { work( k+1, t); b[ k ] = 1; work( k+1, t+1 ); b[ k ] = 0; } } int main() { while (cin >> m) { sum = 0; s2 = 0; for ( int i = 0; i < 7; i++ ) { cin >> a[ i ]; b[ i ] = 0; } work( 0, 0 ); cout <<fixed<<setprecision(3)<< 1- ((double)sum / s2)<< endl; } return 0; }