分析:这道题对于我这种蒟蒻来说还是很有难度啊。

思路非常巧妙,既然不定方程要有有限个数解,那么这个肯定会对解有所限制,也就是本题中的正整数.这个时候我们要表示出方程中的一个根x,设z = n!,那么x=yz/(y-z),这样的话不能得到答案,我们要得到的式子一定是分母只能有乘积的形式,并且同一个字母不能同时在分子分母中出现,因为我们就是利用正整数的整除性来求解的,可以看出x和y都大于z,所以我们设y = z + d,带入,就消掉了y,可以得到x = z^2/d + z,因为x是正整数,所以z^2/d必须是整数,所以d是z^2的因子,那么我们只需要求出z^2有多少个约数就好了.

求约数的个数要用到乘法原理和线性筛,z可以表示为p1^k1 * p2^k2 * p3^k3*...*pn^kn这种形式,每个质因数可以选1到ki个或不选,而约数就是由不同的质因子通过相乘组合起来的,所以约数的个数就等于(k1 + 1)*(k2 + 1)*...*(kn + 1),而我们要求z^2的因子个数,总不可能直接平方吧......可以发现每个质因子的次数扩大了两倍,那么每个质因子就有2*ki + 1种选择,和上面一样直接乘法原理出答案.

因为z = n!,所以枚举1到n中的质数i的倍数,看i出现了几次,就能得到ki.

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;const int mod = 1000000007;int prime[1000010], tot, cnt[1000010],n;
bool vis[1000010];long long ans = 1;void init()
{for (int i = 2; i <= n; i++){if (!vis[i])prime[++tot] = i;for (int j = 1; j <= tot; j++){if (prime[j] * i > n)break;vis[prime[j] * i] = 1;if (i % prime[j] == 0)break;}}
}int main()
{scanf("%d", &n);init();for (int i = 1; i <= tot; i++)for (int j = prime[i]; j <= n; j += prime[i])for (int k = j; k % prime[i] == 0; k /= prime[i])cnt[i]++;for (int i = 1; i <= tot; i++)ans = (ans * 1LL * (cnt[i] * 2 + 1) % mod) % mod;printf("%lld\n", ans);return 0;
}

转载于:https://www.cnblogs.com/zbtrs/p/7390316.html

bzoj2721 [Violet 5]樱花相关推荐

  1. 【BZOJ 2721】 2721: [Violet 5]樱花 (筛)

    2721: [Violet 5]樱花 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 599  Solved: 354 Description Inpu ...

  2. 1624 Violet 5 樱花(Bzoj2721 LOJ10202 LUOGU1445 提高+/省选-) 交叉相乘 阶乘质因数分解技巧 约数个数计算

    总目录 在线测评地址(ybt) 在线测评地址(LOJ) 在线测评地址(LUOGU) 1.交叉相乘 阶乘质因数分解技巧 约数个数计算 ybt 通过 测试点 结果 内存 时间 测试点1 答案正确 604K ...

  3. [颓废史]蒟蒻的刷题记录

    QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...

  4. 一本通提高篇在线提交地址

    一本通提高篇 1 基础算法 1.1 贪心算法 1.1.1 P2018  [第一章例题1.1]活动安排正确: 9 提交: 17 比率: 52.94 % 1.1.2 P2021 [第一章例题1.2]种树正 ...

  5. [Violet]樱花

    [Violet]樱花 BZOJ luogu 一道有意思的推式子题 \[\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}\] \[\frac{x+y}{xy}=\frac{1}{ ...

  6. Luogu P1445[Violet]樱花/P4167 [Violet]樱花

    Luogu P1445[Violet]樱花/P4167 [Violet]樱花 真·双倍经验 化简原式: \[\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\] \[\frac ...

  7. P4167 [Violet]樱花

    题目背景 又到了一年樱花盛开的时节.Vani 和妹子一起去看樱花的时候,找到了一棵大大的樱 花树,上面开满了粉红色的樱花.Vani 粗略估计了一下,一共有足足  n! 片花瓣. Vani 轻柔地对她说 ...

  8. bzoj2721樱花——质因数分解

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2721 可以知道 x 和 y 一定都大于 n! ,不妨把 y 表示为 n!+t : 那么 1/ ...

  9. 【[Violet]樱花】

    就是化柿子 我们求 \[\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\] 的正整数解的个数 喜闻乐见的化柿子了 \[\frac{x+y}{xy}=\frac{1}{n!}\ ...

最新文章

  1. opencv算法+人脸检测
  2. node.js 中的package.json文件怎么创建?
  3. abaqus结构工程分析及实例详解pdf_“结构非线性、材料拟合、冲击碰撞、钣金/金属成形、顺序耦合、多物理场、有/非参优化”专题...
  4. 2013年工作中用到的10个命令:11-20
  5. mysql   show global variables
  6. 卷积层(Convolution)是如何向后传播(Backpropagations)的呢
  7. Hello Qt——QtCreator代码格式化
  8. FPGA学习 Vivado使用篇
  9. 杂记 什么是ABC记谱法
  10. win10PPT不支持Flash动画
  11. 玉溪第一座智能变电站,造国际一流智能配电网,机器人来运维
  12. DJL 教程 1.1 什么是AI人工智能
  13. Visual Studio 2015/2017/2019 设置透明主题、个性背景(含异常解决方法)
  14. RLC串联电路截止频率
  15. Android 9.0 简单适配
  16. 微信号名称乱码什么情况_微信号改成什么好?
  17. 锐捷交换机(S2924/2928G)光口改电口,或电口改光口的准确方法
  18. 布朗大学计算机专业怎么样,恭喜P同学“跨专业”斩获布朗大学-计算机科学硕士!...
  19. 5.2 activiti任务监听器TaskListener
  20. 如何准备机器学习数据集_数据准备技术及其在机器学习中的重要性

热门文章

  1. java循环基础知识_java基础知识—循环结构
  2. horizon服务主要模块_Horizon Workspace 快速部署指南三(配置Workspace数据模块)
  3. sql server update触发器_SQL Server 触发器
  4. python中的括号不是西文吗_二级Python---python语言的基本语法元素(Day1)
  5. 设计模式 之 单例模式
  6. 设计模式练习_设计练习是邪恶的
  7. ElementUI 组件库 md-loader 的解析和优化
  8. 写给初中级前端的高级进阶指南等
  9. 动图演示23个鲜为人知的VSCode快捷键
  10. tomcat闪退解决方案