BZOJ1300 [LLH邀請賽]大數計算機

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   ar   for   資料   

一開始以為暴力搞,後來看了資料範圍還以為要FFT,各種被虐,然後Orz Seter大神!!!

我只想到了前三位:a * b <=> 10^(log(a) + log(b)),於是把乘的數都先log了最後再變回去就可以了。。。

然後後九位的方法:

Seter:"對於素數a,在N!中出現了N / a + N / a ^ 2+...次"

於是C(M, N) = N! / M! / (N - M)!就可以求每個質因數出現的次數,搞定!

 

 1 /************************************************************** 2     Problem: 1300 3     User: rausen 4     Language: C++ 5     Result: Accepted 6     Time:164 ms 7     Memory:1792 kb 8 ****************************************************************/ 9  10 #include <cstdio>11 #include <cmath>12 #include <algorithm>13  14 using namespace std;15 typedef long long LL;16  17 int n, m;18 LL ans = 1;19 bool p[1000001];20  21 int main(){22     scanf("%d%d", &n, &m);23     m = min(m, n - m);24      25     int i, j, x, y, c, s;26     double k = 0, f = 1;27     for (i = 2; i <= n; ++i)28         if (!p[i]){29             for (j = n, x = n - m, y = m; j;){30                 c = (j /= i) - (x /= i) - (y /= i), s = i;31                 for (c <<= 1; c >>= 1; s *= s)32                     if (c & 1) ans *= s, ans %= (LL) 1e12;33             }34             if (i <= 1000)35                 for (j = i * i; j <= n; j += i)36                     p[j] = 1;37         }38     for (i = 1; i <= m; ++i){39         if (f > 1e7)40             k += log10(f), f = 1;41         f = f * (n - m + i) / i;42     }43     k += log10(f);44      45     if (k < 13) printf("%lld\n", ans);46     else printf("%d...%09lld\n", (int) (pow(10, k - floor(k) + 2) + 1e-5), ans % (int) 1e9);47     return 0;48 }
View Code

p.s.話說Seter竟然可以C、C++混用,真是碉堡了。。。

BZOJ1300 [LLH邀請賽]大數計算機

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.