{"id":102,"date":"2010-09-14T08:22:04","date_gmt":"2010-09-14T00:22:04","guid":{"rendered":"http:\/\/www.shuizilong.com\/house\/?p=102"},"modified":"2012-03-03T08:22:20","modified_gmt":"2012-03-03T00:22:20","slug":"spoj-2002-random-number-generator","status":"publish","type":"post","link":"https:\/\/www.shuizilong.com\/house\/archives\/spoj-2002-random-number-generator\/","title":{"rendered":"SPOJ 2002. Random Number Generator"},"content":{"rendered":"<h3>Brief description :<\/h3>\n<p>\u6c42n\u4e2a\u4ea7\u751f\u968f\u673a\u6570\u7684\u533a\u95f4 [-Xi, Xi] \u7684\u603b\u548c s \u843d\u5728\u7ed9\u5b9a\u533a\u95f4[a, b]\u4e0a\u7684\u6982\u7387\u3002<br \/>\n\uff08 0< Xi <= 10, n <= 10\uff09\n<!--more--><\/p>\n<h3>Analyse :<\/h3>\n<p>http:\/\/www.cppblog.com\/jifeifei1989\/archive\/2009\/10\/05\/97890.html<\/p>\n<pre lang=\"cpp\">\r\n\/*\r\n    Author : xiaodao\r\n    Prob : SPOJ 2002. Random Number Generator\r\n    Statuts : Accepted\r\n    Tags : \u5355\u5f62\r\n*\/\r\n#include <iostream>\r\n#include <cstdio>\r\n#include <cstring>\r\nusing namespace std;\r\nconst int N = 10, M = 1<<N;\r\nlong long F[N+1], P[M+1], X[N+1], a, b;\r\nlong long sum, vol; double ans;\r\nint n;\r\n\r\ndouble pow(long long a, int b){\r\n    if (a<=0) return 0;\r\n\r\n    double c = 1;\r\n    while (b!=0){\r\n        if ((b&#038;1)!=0) c *= a;\r\n        a *= a; b >>= 1;\r\n    }\r\n    return c;\r\n}\r\n\r\nvoid init(){\r\n    F[1] = 1; for (int i=2;i<=N;i++) F[i] = F[i-1] * i;\r\n    for (int i=0,j=1;i<=N;i++,j*=2) P[j] = i;\r\n}\r\n\r\nvoid input(){\r\n    scanf(\"%d%lld%lld\", &#038;n, &#038;a, &#038;b);\r\n    if (a>b) swap(a, b);\r\n\r\n    sum = 0; vol = 1;\r\n    for (int i=0;i<n;i++){\r\n        scanf(\"%lld\", &#038;X[i]);\r\n        sum += X[i]; X[i] *= 2; vol *= X[i];\r\n    }\r\n    a += sum; b += sum; sum *= 2;\r\n    a = max(a, 0LL); a = min(a, sum);\r\n    b = max(b, 0LL); b = min(b, sum);\r\n    ans = pow(b, n) - pow(a, n);\r\n}\r\n\r\nvoid solve(){\r\n    int sign = 1, s = 1 << n, p = 0, q, i, j;\r\n\r\n    for (i=1;i<s;i++){\r\n        j = i &#038; -i, q = p, p ^= j, j = P[j], sign *= -1;\r\n        if (p > q) a -= X[j], b -= X[j];\r\n        else a += X[j], b += X[j];\r\n        ans += sign * (pow(b, n) - pow(a, n));\r\n    }\r\n\r\n    ans \/= vol; ans \/= F[n];\r\n}\r\n\r\n\r\nint main(){\r\n    \/\/freopen(\"in.txt\", \"r\", stdin);\r\n    init(); int T; cin >> T;\r\n    while (T--){\r\n        input(); solve();\r\n        printf(\"%.9f\\n\", ans);\r\n    }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Brief description : \u6c42n\u4e2a\u4ea7\u751f\u968f\u673a\u6570\u7684\u533a\u95f4 [-Xi, Xi] \u7684\u603b\u548c s \u843d\u5728\u7ed9\u5b9a\u533a\u95f4[a, b]\u4e0a\u7684\u6982\u7387\u3002 \uff08 0< Xi\n<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[1],"tags":[],"class_list":["post-102","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2tdP7-1E","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/comments?post=102"}],"version-history":[{"count":0,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/posts\/102\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/media?parent=102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/categories?post=102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shuizilong.com\/house\/wp-json\/wp\/v2\/tags?post=102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}