[质因数分解]樱花 洛谷P1445
题目背景
又到了一年樱花盛开的时节。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相关推荐
- 质因数分解(洛谷P1075题题解,Java语言描述)
题目要求 P1075题目链接 分析 其实很水,无非是从从小到大遍历,从2开始,每一次judge一下质数,如果是最小质数,那另一半就是答案. 一定要break,保证一个结果... 如果break不用的话 ...
- java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...
点击上方"蓝字"关注我们了解更多算法思路01题目 题目来源:洛谷OJ 题目链接: https://www.luogu.com.cn/ 题目描述 已知正整数n是两个不同的质数的乘积, ...
- 信息学奥赛一本通 1098:质因数分解 | 1957:【12NOIP普及组】质因数分解 | OpenJudge NOI 1.5 43 | 洛谷 P1075 [NOIP2012 普及组] 质因数分解
[题目链接] ybt 1098:质因数分解 ybt 1957:[12NOIP普及组]质因数分解 OpenJudge NOI 1.5 43:质因数分解 洛谷 P1075 [NOIP2012 普及组] 质 ...
- 洛谷刷题:明明的随机数、质因数分解、不高兴的津津、津津对的储存计划和车厢重组
记录洛谷刷题过程QAQ 一. [NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N N N 个 1 1 1 到 1 ...
- 洛谷——P1075 [NOIP2012 普及组] 质因数分解
P1075 [NOIP2012 普及组] 质因数分解 题目描述 已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入格式 一个正整数nn. 输出格式 一个正整数pp,即较大的那个质 ...
- 洛谷 1072 Hankson 的趣味题——质因数界限讨论
题目:https://www.luogu.org/problemnew/show/P1072 思路是把每个数质因数分解,答案对于每个质因数的次数有选择的区间,通过这个计算. 指数的限制就是上限是b1, ...
- bzoj2721樱花——质因数分解
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2721 可以知道 x 和 y 一定都大于 n! ,不妨把 y 表示为 n!+t : 那么 1/ ...
- 1624 Violet 5 樱花(Bzoj2721 LOJ10202 LUOGU1445 提高+/省选-) 交叉相乘 阶乘质因数分解技巧 约数个数计算
总目录 在线测评地址(ybt) 在线测评地址(LOJ) 在线测评地址(LUOGU) 1.交叉相乘 阶乘质因数分解技巧 约数个数计算 ybt 通过 测试点 结果 内存 时间 测试点1 答案正确 604K ...
- 洛谷 深基 第1部分 语言入门 第7章 函数与结构体
P5735 [深基7.例1]距离函数 [深基7.例1]距离函数 - 洛谷 P5735 [深基7.例1]距离函数(python3实现) P5735 [深基7.例1]距离函数(python3实现)_青少年 ...
最新文章
- 首届腾讯数字安全创新大赛在京启动,挖掘新锐力量推动产业创新
- ajax不能设置哪些header
- java自制缓冲池_java String 缓冲池概念的举例说明
- stackoverflow_Stackoverflow的见解:投票最多的是Spring 4问题
- 设置Apache Hadoop多节点集群
- 平行空间怎么设置32位_高低床怎么设置不占空间
- JAVA WEB篇2——Servlet
- openstack 在线repo
- leetcode 870.优势洗牌
- 《那些年啊,那些事——一个程序员的奋斗史》——122
- html取消css样式,css如何取消样式
- pwn|软件安全相关问题学习笔记
- redis+哨兵+VIP(一主一从两哨兵)
- 本地计算机策略打不开怎么办,我的电脑的本地组策略编辑器怎么打不开?
- 5G NR - MAC RLC PDCP SDAP
- Oculus内下游戏报错,OVR40779122解决办法
- 基于COLA架构创建运输微服务应用和DDD领域建模
- 24 直面配分函数Confronting Partition Function
- Sentinel 流控(限流)
- 新手建站如何选择云服务器配置?以阿里云ecs云服务器为例说明
热门文章
- Shell(Bash)输入一个IP 判断是否可用并进行ping 测试
- 计算机网络学生机怎样连接总机,极域课堂管理系统怎么连接老师 学生端连接问题解决方法...
- MacBookPro 装win7
- Linux内核UDP收包为什么效率低?能做什么优化?
- 计算机储存容量5mb,笔记本电脑的硬盘上 8455MB(CYL 16383,H16,S63) 640GB (LBA 1,250,263,728Sectors) 分别表示什么意思?...
- 共享停车位的市场现状,共享车位盘活城市闲置车位!
- 杭州大江东科目三路线经验分享
- 初识QT之QTWidget窗口
- 微信公众平台版面设计需要服务器,公众号版面设计,微信公众号中排版怎么弄...
- java算术表达式_一文了解如何用 Java 进行算术表达式计算