题目背景

又到了一年樱花盛开的时节。Vani 和妹子一起去看樱花的时候,找到了一棵大大的樱花树,上面开满了粉红色的樱花。Vani 粗略估计了一下,一共有足足 n! 片花瓣。

Vani 轻柔地对她说:“你知道吗?这里面的一片花瓣代表着你,我从里面随机摘一片,能和你相遇的概率只有 1/n! 那么小。我该是多么的幸运,才让你今天这么近地站在我面前。相信我,我一定会把这亿万分之一的缘分变为永远。”

粉红的樱花漫天飞舞,妹子瞬间被 Vani 感动了。她轻轻地牵起了他的手,和他相依而坐。这时,她突然看到田野的尽头也长着两棵樱花树,于是慢慢地把头靠在 Vani 的肩上,在他耳边低语:“看到夕阳里的那两棵樱花树了吗?其中一棵树上的一片花瓣是你,另一棵树上的一片花瓣是我,如果有人从这棵摘下一片,从那棵采下一瓣,我们相遇的概率会不会正好是 1/n! 呢?”

Vani 的大脑飞速运作了一下,立即算出了答案。正要告诉妹子,她突然又轻轻地说:“以前你总是说我数学不好,但是这种简单的题我还是会算的。你看假如左边那棵树上有 x 片花瓣,右边那个有 y 片花瓣,那么我们相遇的概率不就是 1/x+1/y 么,不过有多少种情况能使它正好可以等于 1/n! 呢?这个你就帮我算一下吧~”

显然,面对天然呆的可爱妹子,Vani 不但不能吐槽她的渣数学,而且还要老老实实地帮她算出答案哦。

题目描述

求方程:

1/x​+1/y​=1/n!​

的正整数解的组数,答案对 10^9+7 取模。

输入格式

输入只有一行一个整数,表示 n。

输出格式

输出一行一个整数表示正整数解的组数模 10^9+7 的值。

输入输出样例

输入 #1

2

输出 #1

3

输入 #2

1439

输出 #2

102426508

说明/提示

样例 1 解释

共有三个数对 (x,y) 满足条件,分别是 (3,6),(4,4) 和 )(6,3)。

数据规模与约定

  • 对于 30% 的数据,保证 n≤100 。
  • 对于 100% 的数据,保证 1≤n≤10^6。

题意: 给出n,求能使1/x + 1/y = 1/n!的正整数对(x, y)的个数。

分析: 对1/x + 1/y = 1/n!进行化简可以得到-(x+y)*n!+x*y = 0,此时等号两边同时加(n!)^2来凑出因式分解,这样得到(n!-x)*(n!-y) = (n!)^2,由于n!是一个定值,只要求出符合上式的x个数就是最终答案数,而这样的x个数其实就是n!-x的个数,而n!-x的个数就是(n!)^2的因子个数,通过质因数分解就可以得到这个个数。要注意质因数分解n!时要用提前筛出来的质数分解,不然一定会TLE的。

具体代码如下:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>
using namespace std;
//等价变形为(n!)^2 = (x-n!)*(y-n!)
const int mod = 1e9+7;
int prime[10005], n, num[1000005], cnt;
bool is_prime[10005];void get(){memset(is_prime, true, sizeof is_prime);for(int i = 2; i <= 10004; i++)if(is_prime[i]){prime[++cnt] = i;for(int j = 2; j*i <= 10004; j++)is_prime[i*j] = false;}}signed main()
{get();cin >> n;//枚举(n!)^2的质因子 for(int i = 2; i <= n; i++){int temp = i;for(int j = 1; prime[j]*prime[j] <= temp; j++){while(temp%prime[j] == 0){num[prime[j]] += 2;//因为是(n!)^2,所以要加2 temp/=prime[j];}}if(temp)num[temp] += 2;}long long ans = 1;for(int i = 2; i <= n; i++)if(num[i])ans = ans*(num[i]+1)%mod;cout << ans;return 0;
}

[质因数分解]樱花 洛谷P1445相关推荐

  1. 质因数分解(洛谷P1075题题解,Java语言描述)

    题目要求 P1075题目链接 分析 其实很水,无非是从从小到大遍历,从2开始,每一次judge一下质数,如果是最小质数,那另一半就是答案. 一定要break,保证一个结果... 如果break不用的话 ...

  2. java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...

    点击上方"蓝字"关注我们了解更多算法思路01题目 题目来源:洛谷OJ 题目链接: https://www.luogu.com.cn/ 题目描述 已知正整数n是两个不同的质数的乘积, ...

  3. 信息学奥赛一本通 1098:质因数分解 | 1957:【12NOIP普及组】质因数分解 | OpenJudge NOI 1.5 43 | 洛谷 P1075 [NOIP2012 普及组] 质因数分解

    [题目链接] ybt 1098:质因数分解 ybt 1957:[12NOIP普及组]质因数分解 OpenJudge NOI 1.5 43:质因数分解 洛谷 P1075 [NOIP2012 普及组] 质 ...

  4. 洛谷刷题:明明的随机数、质因数分解、不高兴的津津、津津对的储存计划和车厢重组

    记录洛谷刷题过程QAQ 一. [NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N N N 个 1 1 1 到 1 ...

  5. 洛谷——P1075 [NOIP2012 普及组] 质因数分解

    P1075 [NOIP2012 普及组] 质因数分解 题目描述 已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入格式 一个正整数nn. 输出格式 一个正整数pp,即较大的那个质 ...

  6. 洛谷 1072 Hankson 的趣味题——质因数界限讨论

    题目:https://www.luogu.org/problemnew/show/P1072 思路是把每个数质因数分解,答案对于每个质因数的次数有选择的区间,通过这个计算. 指数的限制就是上限是b1, ...

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

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

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

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

  9. 洛谷 深基 第1部分 语言入门 第7章 函数与结构体

    P5735 [深基7.例1]距离函数 [深基7.例1]距离函数 - 洛谷 P5735 [深基7.例1]距离函数(python3实现) P5735 [深基7.例1]距离函数(python3实现)_青少年 ...

最新文章

  1. 首届腾讯数字安全创新大赛在京启动,挖掘新锐力量推动产业创新
  2. ajax不能设置哪些header
  3. java自制缓冲池_java String 缓冲池概念的举例说明
  4. stackoverflow_Stackoverflow的见解:投票最多的是Spring 4问题
  5. 设置Apache Hadoop多节点集群
  6. 平行空间怎么设置32位_高低床怎么设置不占空间
  7. JAVA WEB篇2——Servlet
  8. openstack 在线repo
  9. leetcode 870.优势洗牌
  10. 《那些年啊,那些事——一个程序员的奋斗史》——122
  11. html取消css样式,css如何取消样式
  12. pwn|软件安全相关问题学习笔记
  13. redis+哨兵+VIP(一主一从两哨兵)
  14. 本地计算机策略打不开怎么办,我的电脑的本地组策略编辑器怎么打不开?
  15. 5G NR - MAC RLC PDCP SDAP
  16. Oculus内下游戏报错,OVR40779122解决办法
  17. 基于COLA架构创建运输微服务应用和DDD领域建模
  18. 24 直面配分函数Confronting Partition Function
  19. Sentinel 流控(限流)
  20. 新手建站如何选择云服务器配置?以阿里云ecs云服务器为例说明

热门文章

  1. Shell(Bash)输入一个IP 判断是否可用并进行ping 测试
  2. 计算机网络学生机怎样连接总机,极域课堂管理系统怎么连接老师 学生端连接问题解决方法...
  3. MacBookPro 装win7
  4. Linux内核UDP收包为什么效率低?能做什么优化?
  5. 计算机储存容量5mb,笔记本电脑的硬盘上 8455MB(CYL 16383,H16,S63) 640GB (LBA 1,250,263,728Sectors) 分别表示什么意思?...
  6. 共享停车位的市场现状,共享车位盘活城市闲置车位!
  7. 杭州大江东科目三路线经验分享
  8. 初识QT之QTWidget窗口
  9. 微信公众平台版面设计需要服务器,公众号版面设计,微信公众号中排版怎么弄...
  10. java算术表达式_一文了解如何用 Java 进行算术表达式计算