描述
,那个被风吹过的夏天,恰同学少年的日子,青涩的年华,却再也回不去了...
我幸运地认识了你,或许是前世五百次的回眸~ 或许比这还多。
我们有时候都会去教室上晚自习,我们住在不同的宿舍(当然),然而,幸运的是,我们去上晚自习时都要经过校园里那个熟悉的路口,那个转角,
然而不幸的是,你我都不总是每天都去自习,我也鼓不起勇气,问你什么时候会去上自习,所以,我可能不可以每天都在那个路口遇到你,尽管我每次去上自习时,都会以最早的时间在那个路口等你最长的时间,所以我知道,只要我们同一天去自习,我就可以在那个转角的路口遇到你,然后上前对你说:“嗨,这么巧~”。
你只告诉过我,你一星期里有几天晚上会去自习,我想知道,我有多少概率会在那个转角遇到你。
一星期有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;}