從前有乙個聰明的小魔女帕琪,興趣是狩獵吸血鬼。人話題意:7種魔法,每種數量不一定,求最多可以有多少個長度為7的全部不同子串行帕琪能熟練使用七種屬性(金、木、水、火、土、日、月)的魔法,除了能使用這麼多種屬性魔法外,她還能將兩種以上屬性組合,從而唱出強力的魔法。比如說為了加強攻擊力而將火和木組合,為了掩蓋弱點而將火和土組合等等,變化非常豐富。
現在帕琪與強大的夜之女王,吸血鬼蕾咪相遇了,夜之女王蕾咪具有非常強大的生命力,普通的魔法難以造成效果,只有終極魔法:帕琪七重奏才能對蕾咪造成傷害。帕琪七重奏的觸發條件是:連續釋放的7個魔法中,如果魔法的屬性各不相同,就能觸發一次帕琪七重奏。
現在帕琪有7種屬性的能量晶體,分別為a1,a2,a3,a4,a5,a6,a7(均為自然數),每次釋放魔法時,會隨機消耗乙個現有的能量晶體,然後釋放乙個對應屬性的魔法。
現在帕琪想知道,她釋放出帕琪七重奏的期望次數是多少,可是她並不會算,於是找到了學oi的你
輸入格式:
一行7個數字,a1,a2,a3,a4,a5,a6,a7
輸出格式:
乙個四捨五入保留3位的浮點數
題解:
一道數學題...然而我居然看了半天沒看懂題解,我真是太弱啦!
七種可能比較難考慮 我們從兩種開始
假設將題裡的7換成2 並且已知第一種為2,第二種為1
不妨設填數的時候是按順序填,那麼根據組合數學的知識,我們顯然可以看出
填第乙個數時填到的機率顯然是2/(2+1)
第二個數填的機率當然是1/(2+1-1)
這裡2+1-1 表示的是sigma(ai)-1,想一想是挺顯然的 因為實際上只是由於前面填了k個數(當然這個例子裡k=1)
因為每個事件是獨立的 根據乘法原理 概率顯然是他們的乘積
但我們忽略了乙個問題 實際上這7種魔法可以任意組合 於是需要在結果前乘上乙個7的階乘
於是我們就可以得到表示式
設n=sigma(ai),可以表示為7!*a1/n*a2/n-1*a3/n-2*......*a6/n-5*a7/n-6
但這就結束了嗎?
你以為結束了 其實沒結束噠!
注意到我們是列舉第i端區間的開頭 也就是說有n-6端完整的區間 而在n-6之後已經無法以i為開頭成為乙個長度為7的區間了
因此需要在答案上乘上乙個n-6
發現恰好可以約掉 那麼答案就是7!*a1/n*a2/n-1*a3/n-2*......*a6/n-5*a7...
———————————————我是萌萌噠分割線—————————————————————————————
很難想象這是一道分類為普及/提高-的題......
我真是太弱啦!
#pragma gcc optimize("o2")#include#include#include#include#include#include#include#include#include#include#include#define n 100001
typedef long long ll;
const int inf=0x3fffffff;
const int maxn=2017;
using namespace std;
inline int read()
while(ch<='9'&&ch>='0')
return f*x;
}double a[n],b[n],ans,sum=1;
int main()
printf("%.3f",sum*a[1]*a[2]*a[3]*a[4]*a[5]*a[6]*a[7]/(ans*(ans-1)*(ans-2)*(ans-3)*(ans-4)*(ans-5)));
}
洛谷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...