zoukankan      html  css  js  c++  java
  • JZOJ 3504. 运算符(calc)

    题目

    Description

    鸡腿想到了一个很高(sha)明(bi)的运算符,那就是’!’,没错就是感叹号。他给了如下的定义:

    1、n!k = n!(k-1) * (n-1)!k (n> 0 and k > 0)

    2、n!k = 1 (n = 0)

    3、n!k = n (k = 0)

    现在鸡腿告诉你n和k你能告诉他n!k的不同约数个数有多少个吗?只要对1,000,000,009取模就可以了哦!
     

    Input

    一行,输入两个正整数n,k。

    Output

    一行,输出一个整数表示答案。
     

    Sample Input

    输入1:
    3 1
    输入2:
    100 2

    Sample Output

    输出1:
    4
    输出2:
    321266186
     

    Data Constraint

    对于30%的数据0 <n ≤ 10, 0 <k ≤ 10;

    对于100%的数据0 <n ≤ 1000, 0 <k ≤ 100。

     

    分析

     

    • 这道题显然我们需要先找规律
    • 这里一个矩阵,代表
    • 1 1 1 1 1
    • 2 2 2 2 2
    • 6 12 24 48
    • 24 288....
    • 所以当前数等于左边乘上面
    • 左边一列是阶乘
    • 然后我们要求的是约数个数
    • 就要分解质因数
    • 我们举个例子,24=4*6; 4=2^2,6=2*3 24=2^3*3
    • 所以我们知道两个数相乘,质因子是相加的
    • 所以设f[i][j][k]为到第i行j列第k个质因子转移显然

    代码

     1 #include<iostream>
     2 using namespace std;
     3 const long long mod=1000000009;
     4 int f[1001][101][170],prime[1001],cnt;
     5 bool vis[1001];
     6 int n,kk;
     7 int main ()
     8 {
     9     for (int i=2;i<=1000;i++)
    10       if (!vis[i])
    11       {
    12            prime[++cnt]=i;
    13            for (int j=i+i;j<=1000;j+=i)
    14            vis[j]=1;
    15       }
    16     cin>>n>>kk;
    17     for (int i=1;i<=n;i++)
    18         for (int j=1;j<=cnt;j++)
    19         {
    20             long long now=prime[j],t=i/now,t1=0;
    21             if (t==0) break;
    22             while (t) t1=(t1+t)%mod,t/=now;
    23             f[i][1][j]=t1%mod;
    24         }
    25     for (int i=2;i<=n;i++)
    26       for (int j=2;j<=kk;j++)
    27         for (int k=1;k<=cnt;k++)
    28           f[i][j][k]=(f[i-1][j][k]+f[i][j-1][k])%mod;
    29     long long ans=1;
    30     for (int k=1;k<=cnt;k++)
    31        ans=ans*(f[n][kk][k]+1)%mod;
    32     cout<<ans;
    33 }

     

  • 相关阅读:
    golang 查询数据库并返回json
    logrus日志使用详解
    英文文章写作的一点个人思考
    AKS (1) AKS最佳实践
    Azure Application Insight (3) ASP.NET MVC增加Application Insight
    oracle 创建存储过程后,重新编译错误,如何查看错误信息
    ORACLE 存储过程IN关键字使用问题
    Oracle/for loop循环如何进行跳过、跳出操作
    (转)Golang struct{}的几种特殊用法
    (转)Golang 延迟函数 defer 详解
  • 原文地址:https://www.cnblogs.com/zjzjzj/p/11371350.html
Copyright © 2011-2022 走看看