JZOJ3885. 【长郡NOIP2014模拟10.22】搞笑的代码
2017-01-19 11:50
225 查看
Description
在OI界存在着一位传奇选手——QQ,他总是以风格迥异的搞笑代码受世人围观某次某道题目的输入是一个排列,他使用了以下伪代码来生成数据
while 序列长度
分析
设fi 表示当长度为i的时候的期望。在i这个时候,有in 的概率与之前选的数重复,
那么,就有n−in 的概率与之前选的数不重复。
所以 fi=in∗(fi+1)+n−in∗(fi−1+1)
通过解方程的思想,得到fi=nn−i+fi−1
因为n非常大,
所以,我们每10000000记录一下11+12+13+...
code
#include <cstdio> #include <algorithm> #include <cstring> #include <string.h> #include <cmath> #include <math.h> using namespace std; double z[215]={0,16.6953113658599,17.3884585214198,17.7939236211946,18.0816056894797,18.3047492382940, 18.4870707934212,18.6412214720580,18.7747528637897,18.8925358987516,18.9978964138539, 19.0932065932037,19.1802179698145,19.2602606771676,19.3343686490465,19.4033615202954, 19.4679000412246,19.5285246628573,19.5856830765338,19.6397502976579,19.6910435919139, 19.7398337559642,19.7863537714909,19.8308055339629,19.8733651482911,19.9141871427281, 19.9534078558044,19.9911481837160,20.0275158278208,20.0626071475705,20.0965086991887, 20.1292985219579,20.1610472202221,20.1918188788415,20.2216718419466,20.2506593787778, 20.2788302557049,20.3062292298554,20.3328974769020,20.3588729632716,20.3841907712238, 20.4088833837837,20.4329809353337,20.4565114327162,20.4795009509145,20.5019738067413, 20.5239527134359,20.5454589186337,20.5665123278094,20.5871316149909,20.6073343222880, 20.6271369495646,20.6465550354028,20.6656032303554,20.6842953633501,20.7026445020014, 20.7206630074879,20.7383625845716,20.7557543272683,20.7728487606130,20.7896558789153, 20.8061851808528,20.8224457017114,20.8384460430450,20.8541944000008,20.8696985865247, 20.8849660586439,20.9000039359971,20.9148190217713,20.9294178211818,20.9438065586235, 20.9579911936054,20.9719774355704,20.9857707576932,20.9993764097397,21.0127994300628, 21.0260446568041,21.0391167383629,21.0520201431905,21.0647591689598,21.0773379511587, 21.0897604711496,21.1020305637339,21.1141519242589,21.1261281152984,21.1379625729384, 21.1496586126948,21.1612194350892,21.1726481309062,21.1839476861538,21.1951209867457, 21.2061708229262,21.2170998934524,21.2279108095507,21.2386060986618,21.2491882079867, 21.2596595078485,21.2700222948787,21.2802787950406,21.2904311664995,21.3004815023479, 21.3104318331962,21.3202841296343,21.3300403045749,21.3397022154820,21.3492716664936, 21.3587504104436,21.3681401507891,21.3774425434471,21.3866591985477,21.3957916821068, 21.4048415176227,21.4138101876014,21.4226991350147,21.4315097646930,21.4402434446579, 21.4489015073973,21.4574852510850,21.4659959407493,21.4744348093916,21.4828030590586, 21.4911018618698,21.4993323610030,21.5074956716388,21.5155928818681,21.5236250535622, 21.5315932232082,21.5394984027122,21.5473415801701,21.5551237206091,21.5628457667001, 21.5705086394427,21.5781132388250,21.5856604444576,21.5931511161839,21.6005860946687, 21.6079662019636,21.6152922420530,21.6225650013794,21.6297852493503,21.6369537388263, 21.6440712065926,21.6511383738132,21.6581559464694,21.6651246157831,21.6720450586253, 21.6789179379107,21.6857439029787,21.6925235899618,21.6992576221409,21.7059466102895, 21.7125911530059,21.7191918370351,21.7257492375791,21.7322639185982,21.7387364331017, 21.7451673234299,21.7515571215266,21.7579063492033,21.7642155183946,21.7704851314062, 21.7767156811549,21.7829076514009,21.7890615169734,21.7951777439889,21.8012567900635, 21.8072991045176,21.8133051285760,21.8192752955607,21.8252100310788,21.8311097532042, 21.8369748726549,21.8428057929640,21.8486029106467,21.8543666153618,21.8600972900691, 21.8657953111821,21.8714610487162,21.8770948664329,21.8826971219800,21.8882681670279, 21.8938083474019,21.8993180032114,21.9047974689745,21.9102470737406,21.9156671412085, 21.9210579898419,21.9264199329818,21.9317532789558,21.9370583311841,21.9423353882835, 21.9475847441683,21.9528066881481,21.9580015050238,21.9631694751809,21.9683108746800, 21.9734259753455,21.9785150448517,21.9835783468069,21.9886161408356,21.9936286826579, 21.9986162241677,22.0035790135086,22.0085172951480,22.0134313099492,22.0183212952422, 22.0231874848922,22.0280301093668,22.0328493958016,22.0376455680639,22.0424188468154, 22.0471694495729,22.0518975907677,22.0566034818040,22.0612873311154}; long double ans,j; long long n; int main() { scanf("%lld",&n); ans=z[n/10000000]; for(long long i=n/10000000*10000000+1;i<=n;i++) { j=i; ans+=1/j; } ans=ans*n; printf("%.0lf",double(ans)); }
相关文章推荐
- 搞笑的代码【长郡NOIP2014模拟10.22】
- JZOJ 3885. 【长郡NOIP2014模拟10.22】搞笑的代码
- 【JZOJ3885】【长郡NOIP2014模拟10.22】搞笑的代码
- {题解}[jzoj3885]【长郡NOIP2014模拟10.22】搞笑的代码
- 【长郡NOIP2014模拟10.22】搞笑的代码
- 【长郡NOIP2014模拟10.22】搞笑的代码
- jzoj3886. 【长郡NOIP2014模拟10.22】道路维护
- 【长郡NOIP2014模拟10.22】字符串查询
- JZOJ 3886. 【长郡NOIP2014模拟10.22】道路维护
- 【JZOJ3887】【长郡NOIP2014模拟10.22】字符串查询
- 【JZOJ3886】【长郡NOIP2014模拟10.22】道路维护
- 【长郡NOIP2014模拟10.22】道路维护
- JZOJ 3887. 【长郡NOIP2014模拟10.22】字符串查询
- 道路维护【长郡NOIP2014模拟10.22】
- 【GDOI2014模拟】服务器 题解+代码
- 【GDOI2014模拟】雨天的尾巴 题解+代码
- 【GDOI2014模拟】网格 题解+代码
- 【GDOI2014模拟】Tree 题解+代码
- 【GDOI2014模拟】Pty爬山 题解+代码