zoukankan      html  css  js  c++  java
  • poj 2992 Divisors

    本题求C (n,k)的因子个数,开始我也是分别求n!/m!*(n-m)!分母和分子的素因子个数,再求因子个数果断tle了。。。

    看过大牛们的discuss后,发现要打表,加上公式 c(n,k)=c(n,k-1)*(n-k+1)/k;求因子个数公式

    设 N= P1^x1 * P2^x2* …… * Pn^xn;

    则N的因子个数M为 M=(x1+1) * (x2+1) * …… *(xn+1);

    附ac代码: (ps:有些变量名不规整,请不要在意细节←_←)

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cmath>
     4 using namespace std;
     5 
     6 int sign[500];
     7 int pri[500];
     8 int tot;
     9 int map[500],map1[500];
    10 long long c[500][500];
    11 
    12 void getpri (){
    13 memset (sign,0,sizeof sign);
    14 tot=0;
    15 sign[0]=sign[1]=1;
    16 for (int i=2;i*i<500;i++){
    17 if (!sign[i]){
    18 for (int j=i*i;j<500;j+=i){
    19 sign[j]=1;
    20 }
    21 }
    22 }
    23 for (int i=2;i<500;i++){
    24 if (!sign[i]){
    25 pri[tot++]=i;
    26 }
    27 }
    28 }
    29 
    30 int main (){
    31 int n,k;
    32 long long ans,anss;
    33 getpri ();
    34 int nn=450;//long long ss[500][500];
    35 for (int o=0;o<nn;o++){
    36 c[o][0]=1;//ss[o][0]=1;
    37 memset (map,0,sizeof map);
    38 int f=0;
    39 for (int i=1;i<=o/2;i++){//ss[o][i]=1;
    40 memset (map1,0,sizeof map1);
    41 int temp=o-i+1;
    42 for (int j=0;pri[j]<=temp;j++){
    43 while (temp%pri[j]==0){
    44 temp/=pri[j];
    45 map[j]++;
    46 }
    47 f=max (f,j);
    48 }
    49 temp=i;
    50 for (int j=0;pri[j]<=temp;j++){
    51 while (temp%pri[j]==0){
    52 temp/=pri[j];
    53 map1[j]++;
    54 }
    55 f=max (f,j);
    56 }
    57 ans=1;
    58 for (int j=0;j<=f;j++){
    59 map[j]-=map1[j];
    60 map1[j]=0;
    61 if (map[j])
    62 ans*=(map[j]+1);
    63 }
    64 c[o][i]=ans;
    65 }
    66 }
    67 while (cin>>n>>k){
    68 k=min (k,n-k);
    69 
    70 
    71 cout<<c[n][k]<<endl;
    72 }
    73 return 0;
    74 }
  • 相关阅读:
    日志组件logback的介绍及配置使用方法(二)
    日志组件logback的介绍及配置使用方法(一)
    MyBatis+MySQL 返回插入的主键ID
    基于shiro-cas的单点登录、单点登出、统一认证授权系统
    使用Redis存储Nginx+Tomcat负载均衡集群的Session
    数字转大写钱币
    世界四大汽车生产公司
    强制登陆远程桌面
    sql 获取连续年份
    SQL 递归
  • 原文地址:https://www.cnblogs.com/gfc-g/p/3842473.html
Copyright © 2011-2022 走看看