題目背景
從前有乙個聰明的小魔女帕琪,興趣是狩獵吸血鬼。
帕琪能熟練使用七種屬性(金、木、水、火、土、日、月)的魔法,除了能使用這麼多種屬性魔法外,她還能將兩種以上屬性組合,從而唱出強力的魔法。比如說為了加強攻擊力而將火和木組合,為了掩蓋弱點而將火和土組合等等,變化非常豐富。
現在帕琪與強大的夜之女王,吸血鬼蕾咪相遇了,夜之女王蕾咪具有非常強大的生命力,普通的魔法難以造成效果,只有終極魔法:帕琪七重奏才能對蕾咪造成傷害。帕琪七重奏的觸發條件是:連續釋放的7個魔法中,如果魔法的屬性各不相同,就能觸發一次帕琪七重奏。
現在帕琪有7種屬性的能量晶體,分別為a1,a2,a3,a4,a5,a6,a7(均為自然數),每次釋放魔法時,會隨機消耗乙個現有的能量晶體,然後釋放乙個對應屬性的魔法。
現在帕琪想知道,她釋放出帕琪七重奏的期望次數是多少,可是她並不會算,於是找到了學oi的你
輸入格式:
一行7個數字,a1,a2,a3,a4,a5,a6,a7
輸出格式:
乙個四捨五入保留3位的浮點數
輸入樣例#1: 複製
1 1 1 1 1 1 1
輸出樣例#1: 複製
1.000
樣例說明:
顯然一定會觸發一次帕琪七重奏
資料範圍:
對於30%的測試點,a1+a2+a3+a4+a5+a6+a7<=10
對於100%的測試點,a1+a2+a3+a4+a5+a6+a7<=10^9
by-szc
好題首先,對於這種沒有給出權值或者權值為1的題求期望,根據期望的定義式:期望=$\sum pi*xi$
這樣的題沒有實際上就是求概率
定義:$tot=\sum_^7 ai$
對於每乙個元素,它可以被作為釋放元素的概率為$(a1/tot)*(a2/(tot-1))*(a3/(tot-2))*...*(a7/(tot-6))$=$a[i]/(tot-i+1)$
這道題目與釋放的順序無關,所以還需要乘上7的階乘,也就是5040
此時,我們還遺漏了乙個條件:所有的元素都必須用上,
根據排列的性質,每乙個元素都可以作為首項元素,只要元素的個數不滿7
所以我們需要在結尾乘$(tot-6)$
1 #include2 #include3 #include4 #include5using
namespace
std;
6 inline int
read()710
while(c>='
0'&&c<='
9')x=x*10+c-48,c=getchar();return x*flag;11}
12double a[15],tot=0;13
intmain()
1422
double ans=5040.0;23
for(int i=1;i<=7;i++)
24 ans=ans*(a[i]/(tot-i+1
));25 ans=ans*(tot-6
);26 printf("
%.3lf
",ans);
27return0;
28 }
洛谷P3802 小魔女帕琪
從前有乙個聰明的小魔女帕琪,興趣是狩獵吸血鬼。帕琪能熟練使用七種屬性 金 木 水 火 土 日 月 的魔法,除了能使用這麼多種屬性魔法外,她還能將兩種以上屬性組合,從而唱出強力的魔法。比如說為了加強攻擊力而將火和木組合,為了掩蓋弱點而將火和土組合等等,變化非常豐富。現在帕琪與強大的夜之女王,吸血鬼蕾咪...
洛谷P3802 小魔女帕琪
從前有乙個聰明的小魔女帕琪,興趣是狩獵吸血鬼。帕琪能熟練使用七種屬性 金 木 水 火 土 日 月 的魔法,除了能使用這麼多種屬性魔法外,她還能將兩種以上屬性組合,從而唱出強力的魔法。比如說為了加強攻擊力而將火和木組合,為了掩蓋弱點而將火和土組合等等,變化非常豐富。現在帕琪與強大的夜之女王,吸血鬼蕾咪...
P3802 小魔女帕琪
傳送門 考慮前面7個魔法 如果前面七個魔法各不相同,那麼就能完成一次帕琪七重奏 設 a a1 a2 a7,s a1 a2 a7,b s s 1 s 6 對於不同的施法順序,前面七個魔法各不相同的概率總是 a b 不同的順序如 a1,a3,a2,a4,a5,a6,a7 和 a1,a2,a3,a4,a5...