bzoj4807 -- 组合数
2018-06-17 22:55:32来源:未知 阅读 ()
容易看出答案就是C(n,m)。。。
然后高精乘一下就可以了。
对n!分解质因数时,质数p的出现次数是n/p+n/p^2+n/p^3+...
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define MAXN 101 7 inline int Min(int x,int y){return x<y?x:y;} 8 inline int Max(int x,int y){return x<y?y:x;} 9 struct bign 10 { 11 int len, s[MAXN]; 12 bign () 13 { 14 memset(s, 0, sizeof(s)); 15 len = 1; 16 } 17 bign (int num) { *this = num; } 18 bign (const char *num) { *this = num; } 19 bign operator = (const int num) 20 { 21 char s[MAXN]; 22 sprintf(s, "%d", num); 23 *this = s; 24 return *this; 25 } 26 bign operator = (const char *num) 27 { 28 for(int i = 0; num[i] == '0'; num++) ; 29 len = strlen(num); 30 for(int i = 0; i < len; i++) s[i] = num[len-i-1] - '0'; 31 return *this; 32 } 33 void clean() 34 { 35 if(len>50)len=50; 36 while(len > 1 && !s[len-1]) len--; 37 } 38 bign operator * (const bign &b) 39 { 40 bign c; 41 c.len = len + b.len; 42 for(int i = 0; i < len; i++) 43 { 44 for(int j = 0; j < b.len; j++) 45 { 46 c.s[i+j] += s[i] * b.s[j]; 47 } 48 } 49 for(int i = 0; i < c.len; i++) 50 { 51 c.s[i+1] += c.s[i]/10; 52 c.s[i] %= 10; 53 } 54 c.clean(); 55 return c; 56 } 57 bign operator *= (const bign &b) 58 { 59 *this = *this * b; 60 return *this; 61 } 62 }n; 63 int i,k,N,M,P[1000010],tot,p[1000010]; 64 bool b[1000010]; 65 long long j; 66 int main() 67 { 68 scanf("%d%d",&N,&M); 69 if(N<M)swap(N,M); 70 for(i=2;i<=N;i++){ 71 if(!b[i])P[++tot]=i; 72 for(j=1;P[j]*i<=N&&j<=tot;j++){ 73 b[P[j]*i]=1; 74 if(!(i%P[j]))break; 75 } 76 } 77 for(i=1;i<=tot;i++) 78 for(j=P[i];j<=N;j=j*P[i])p[i]+=N/j; 79 for(i=1;i<=tot;i++) 80 for(j=P[i];j<=M;j=j*P[i])p[i]-=M/j; 81 for(i=1;i<=tot;i++) 82 for(j=P[i];j<=N-M;j=j*P[i])p[i]-=(N-M)/j; 83 n=1; 84 for(i=1;i<=tot;i++) 85 for(j=0;j<p[i];j++)n*=P[i]; 86 for(i=n.len-1;i>=0;i--)putchar(n.s[i]+48); 87 return 0; 88 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- P1358 扑克牌 2020-05-06
- c++简单学习 2018-12-13
- 洛谷P2606 [ZJOI2010]排列计数(组合数 dp) 2018-09-18
- codechef Count Relations(组合数 二项式定理) 2018-09-10
- BZOJ1008: [HNOI2008]越狱(组合数) 2018-07-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash