【洛谷】P1445 没占到1444的愤怒
继续洛谷刷水日常,突然遇到一道不是很水的题目……
https://www.luogu.org/problem/show?pid=1445
题意:给定n(1<=n<=1000000),求方程1/x+1/y=1/n!的正整数解的个数。
思考了5min后,就去看题解了……
Qrc:这也太弱了……
【思路】
原方程可变形为:
xy/(x+y)=n!
xy-(x+y)n!=0,配方后,得:
(x-n!)(y-n!)=(n!)^2
所以求出(n!)^2的因数个数即可,又由于因数定理(正整数的因数个数等于其所有质因数幂次+1的乘积),只要求出其质因数及幂次即可
又:(n!)^2的每个质因数的幂次都是n!的质因数的2倍
同理,n!的质因数幂次是1~n每个数质因数幂次的“和”
所以对1~n中所有数求出质因数及幂次即可
先筛出1~n中所有的质数
再对每一个质数判断,1~n中,它作为质因数出现了几次?
下面贴上代码:
1 #include<cstdio>
2 const int M=1e9+7;
3 int n,primes[5000001],num=0,Ans=1;
4 bool isntprime[10000001]={1,1};
5 void prime1(){//线性筛法
6 for(int i=2;i<=n;++i){
7 if(!isntprime[i])primes[++num]=i;
8 for(int j=1;j<=num&&i*primes[j]<=n;++j){
9 isntprime[i*primes[j]]=1;
10 if(!(i%primes[j]))break;
11 }
12 }
13 }
14 int main(){
15 scanf("%d",&n);
16 prime1();
17 for(int i=1;i<=num;++i){
18 int prime=primes[i],c=0;
19 for(long long j=prime;j<=n;j*=prime)
20 c+=n/j;//必须对prime的若干次幂都进行一遍,这样不会漏掉包含其多次幂的数
21 Ans=1ll*Ans*(c*2+1)%M;
22 }
23 printf("%d",Ans);
24 return 0;
25 }
【洛谷】P1445 没占到1444的愤怒的更多相关文章
- 洛谷P1445 [Violet] 樱花 (数学)
洛谷P1445 [Violet] 樱花 题目背景 我很愤怒 题目描述 求方程 1/X+1/Y=1/(N!) 的正整数解的组数,其中N≤10^6. 解的组数,应模1e9+7. 输入输出格式 输入格式: ...
- 【题解】洛谷P1445 [Violet]樱花 (推导+约数和)
洛谷P1445:https://www.luogu.org/problemnew/show/P1445 推导过程 1/x+1/y=1/n! 设y=n!+k(k∈N∗) 1/x+1/(n!+k)=1 ...
- 洛谷P1445 樱花
题意:求 1/x + 1/y = 1/(n!)的正整数解个数. 解:神仙...... 设(n!) = t 打表发现 x ∈ [t+1 , 2t] 反正就是拿到式子以后乱搞一通然后发现得到了这个很美观的 ...
- 【洛谷 P1445】 [Violet]樱花(唯一分解定理)
做了题还是忍不住要写一发题解,感觉楼下的不易懂啊. 本题解使用latex纯手写精心打造. 题意:求\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\)的正整数解总数. 首先 ...
- 洛谷 P1445 [Violet]樱花
#include<cstdio> #include<algorithm> #include<cstring> #include<vector> usin ...
- 洛谷P1198 [JSOI2008]最大数
P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...
- [洛谷P1198/BZOJ1012][JSOI2008] 最大数 - 树状数组/线段树?
其实已经学了树状数组和线段树,然而懒得做题,所以至今没写多少博客 Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数 ...
- 洛谷 P1039侦探推理
/* 枚举罪犯和星期几,那么所有人说的话是真是假一目了然. 首先一个人不能既说真话又说假话. 即: I am guilty. I am not guilty. 因为非真即假,所以直接判断impossi ...
- 洛谷 P1640 [SCOI2010]连续攻击问题
洛谷 一句话题意: 每个武器有两种属性,每种武器只能选择一种属性,从属性1连续递增才算攻击,求最大连续攻击次数. 因为同学告诉我这是二分图最大匹配,自然就往那个方向去想. 那么怎么建图呢? 每个武器只 ...
随机推荐
- UVAlive4287_Proving Equivalences
题意是告诉你有n个命题,m条递推关系,表示某个命题可以推出另外一个命题. 现在问你至少在增加多少个递推关系可以保证所有命题两两互推. 命题为点,关系为有向边,题目转化成为至少增加多少条有向边使得整个图 ...
- Oracle 修改dmp的表空间
1.百度下载 UltraEdit 并安装 2.打开程序,文件-->打开-->找到dmp 文件太大会提示,选择第一个默认,确定 3.按CTRL+H 转成十六进制编辑 4.例如:dmp里面 ...
- java 连接oracle 进行增删改查
1.在DAO层新增类OraclePersionDao package com.test.dao; import java.sql.*; /** * Created by wdw on 2017/9/1 ...
- 【XSY2753】LCM
Description 给你\(n,k\),要你选一些互不相同的正整数,满足这些数的lcm为\(n\),且这些数的和为\(k\)的倍数. 求选择的方案数.对\(232792561\)取模. \(n\l ...
- Android系统权限和root权限
Android系统权限和root权限http://www.verydemo.com/demo_c189_i277.html
- 解题:HEOI 2015 最短不公共子串
题面 制杖四合一,HEOI以前居然出这种**题,看来HE还是联考比较好= = 首先对第二个串建SAM 第一个简单,以每个位置为起点在SAM上走,失配时更新答案 第二个先在第二个串上预处理$firs[i ...
- Chapter 5(串)
1.kmp #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <str ...
- Linux可执行文件后缀问题
一般来说,可执行文件没有扩展名. Linux不根据扩展名判断文件类型,而是根据文件的内容来判断.所以扩展名的作用是帮助人来识别文件,对于Linux系统本身来说没有什么用处. .sh结尾表示是shell ...
- Android Studio 安装在Windows10中的陷阱
操作系统:Windows 10 Pro CPU:AMD IDE:Android Studio 2.0 JDK:8.0 安装完AS(Android Studio)之后,运行AS发现无法启动模拟器,提示“ ...
- python基础之模块之sys模块
sys模块的功能 sys是python中较为常用的一个模块,他提供了对python脚本运行时的环境的操作. sys功能: 1 sys.argv #将python脚本运行时的脚本名以及参数作为 ...