题目

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 }

转载于:https://www.cnblogs.com/zjzjzj/p/11371350.html

JZOJ 3504. 运算符(calc)相关推荐

  1. 【纪中受难记】——Day17:本来能AK

    (标题妄想). 95/0/0 第二题很水,后来花5分钟切了. 3503. 粉刷(paint) (Standard IO) Time Limits: 1000 ms  Memory Limits: 13 ...

  2. 0x11.基本数据结构 — 栈与单调栈

    目录 一.栈 0.AcWing 41. 包含min函数的栈 (自己造栈) 1.AcWing 128. 编辑器 (对顶栈) 2.AcWing 129. 火车进栈 3.AcWing 130. 火车进出栈问 ...

  3. 信息竞赛进阶指南--中缀表达式转后缀表达式并求值(模板)

    // 后缀表达式转中缀表达式,同时求值,O(n)// 数值栈 vector<int> nums; // 运算符栈 vector<char> ops;// 优先级 int gra ...

  4. 后缀表达式、中缀表达式

    一.后缀表达式 1.理解 对于算术表达式来说,其基本规则是:先乘除,后加减:先括号内,再括号外:相同优先级情况下从左到右.比如,5 + 6 / 2 - 3 * 4 就是一个算术表达式,它的正确理解应该 ...

  5. CSS3的calc()使用

    什么是calc()? 学习calc()之前,我们有必要先知道calc()是什么?只有知道了他是个什么东东?在实际运用中更好的使用他. calc()从字面我们可以把他理解为一个函数function.其实 ...

  6. Css3新属性:calc()

    一.前言 calc()看起来像是javascript中的一个函数,而事实上它是用在Css中的,可以用它来计算长度(宽度或高度),能够自动根据不同尺寸的屏幕自动调接数值,从而很轻松的实现自适应布局展示在 ...

  7. [css] CSS中的calc()有什么作用?

    [css] CSS中的calc()有什么作用? 用来计算长宽的属性,非常好用,百分比,px,vh/vm都可参与计算, 不过正如上面的大兄弟说的,运算符的左右要有空格,要不然不生效 个人简介 我是歌谣, ...

  8. 信息学奥赛一本通 1356:计算(calc)

    [题目链接] ybt 1356:计算(calc) [题目考点] 1. 表达式求值 中缀表达式求值 2. 表达式树 表达式树:一棵表达式树可以表示一系列的运算. 表达式树中的结点包括运算符与数值 str ...

  9. CSS3 calc() 函数,height: calc(100% - 70px);

    今天做练习的时候遇到了这样一行代码:height: calc(100% - 70px);,100%的高度减去70px???这是什么函数?竟然支持不同单位之间的运算?! 通过查阅资料,我终于认识了这个函 ...

最新文章

  1. 必看!清华大学刘洋教授“浅谈研究生学位论文选题”方法,3月7日1小时视频公开课(附视频PPT下载)...
  2. 某油企产成品标准成本估算逻辑
  3. 贝叶斯分类器期望损失函数理解及衍生的全新理解
  4. 因果推断 - 基础知识
  5. java中英对比_2017-11-09 中英文代码对比系列之Java一例
  6. linux vi行尾总是显示颜色,【转载】Linux 下使用 vi 没有颜色的解决办法
  7. vue封装websocket_有关WebSocket必须了解的知识
  8. 汇编中寄存器加[]的意思
  9. android studio 更新 Gradle错误解决方法
  10. PD2SE-Net:植物病害诊断和严重性评估网络(首次)
  11. 台式计算机键盘示意图,电脑键盘示意图
  12. 【坐标标注】点坐标标注插件使用手册,可支持批量标注
  13. python播放音乐同步歌词_Python点阵字玩转动态歌词
  14. Linux系统防火墙概述
  15. windows10使用openssl生成ca证书并本地模拟https调试开发环境
  16. 新手小白怎么学抖音运营?抖音运营5大技巧
  17. Rounding necessary
  18. LIMS和TDM比较分析
  19. VTL:图形基本操作进阶——多分辨率策略(模型抽取的三种方法)
  20. java画球_我的世界 如何用指令画球 JAVA 1.13+

热门文章

  1. iOS【终极方案】精准获取webView内容高度,自适应高度
  2. 烂泥:更换ESXI5.0管理网卡及管理IP地址
  3. 构建高性能ASP.NET站点 第七章 如何解决内存的问题(后篇)—托管资源优化—监常用优化措施...
  4. SylixOS网络性能测试
  5. struts Caused by: no protocol dtd - Class: java.net.URL
  6. HDOJ 1282 回文数猜想(回文串类)
  7. 使用Aop管理所有Valid结构bindingResult
  8. SVM与feature
  9. 流程一改,魔鬼变天使
  10. Web后端学习笔记 Flask (5) 数据库