题目大意

求方程$$\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$$的正整数解的组数。

思路

咱们把式子整理得$$xy-(x+y)N!=0$$。$xy$和$x+y$?貌似可以因式分解?!于是$$N!^2 - (x + y)N! + xy = N!^2$$,即$$(x-N!)(y-N!)=N!^2$$。令$A=x-N!,B=y-N!$,则原式变为$$A*B=(N!)^2$$。因此,解的个数便是$N!^2$的因子的个数。根据唯一分解定理,任意的正整数都可分解为$\prod p_i^{c_i}$,根据阶乘分解的方法,每个$c_i = \sum_{i=1}^{\log_p N}\frac{N}{p^i}$。对于$N!^2$,其质因数分解出的每一个$c_i$都是$N!$质因数分解出的$c_i$的2倍。根据因数个数定理,一个数的因数的个数=$\prod c_i+1$。

综上所述,应当对$N!$进行阶乘分解,再将求出的$2c_i+1$,将对于每一个$p_i$的上式结果相乘即为所求。

注意

本题数字大,因此一切数量值类型都要用long long。

#include <cstdio>
#include <cstring>
using namespace std; const int MAX_N = 1000010, MAX_P_CNT = 5000, P = 1e9 + 7; int GetPrime(int *prime, int n)
{
static bool NotPrime[MAX_N];
memset(NotPrime, false, sizeof(NotPrime));
int primeCnt = 0;
for (int i = 2; i <= n; i++)
{
if (!NotPrime[i])
prime[primeCnt++] = i;
for (int j = 0; j < primeCnt; j++)
{
if (i*prime[j] > n)
break;
NotPrime[i*prime[j]] = true;
if (i%prime[j] == 0)
break;
}
}
return primeCnt;
} int Proceed(int n, int *prime)
{
long long ans = 1;
for (int i = 0; prime[i] <= n; i++)
{
long long k = 0;
for (long long j = prime[i]; j <= n; j *= prime[i])
k += (long long)n / j;
ans = (ans * (k * 2 + 1)) % P;
}
return ans;
} int main()
{
int n;
static int prime[MAX_N];
scanf("%d", &n);
GetPrime(prime, MAX_N - 1);
printf("%d\n", Proceed(n, prime));
return 0;
}

  

luogu1445 [violet]樱花 阶乘分解的更多相关文章

  1. Luogu1445 [Violet]樱花 ---- 数论优化

    Luogu1445 [Violet]樱花 一句话题意:(本来就是一句话的) 求方程 $\frac{1}{X} + \frac{1}{Y} = \frac{1}{N!}$ 的正整数解的组数,其中$N \ ...

  2. Luogu1445 [Violet]樱花

    题面 题解 $$ \frac 1x + \frac 1y = \frac 1{n!} \\ \frac{x+y}{xy}=\frac 1{n!} \\ xy=n!(x+y) \\ xy-n!(x+y) ...

  3. bzoj2721 / P1445 [Violet]樱花

    P1445 [Violet]樱花 显然$x,y>n$ 那么我们可以设$a=n!,y=a+t(t>0)$ 再对原式通分一下$a(a+t)+ax=x(a+t)$ $a^{2}+at+ax=ax ...

  4. 洛谷P1445 [Violet] 樱花 (数学)

    洛谷P1445 [Violet] 樱花 题目背景 我很愤怒 题目描述 求方程 1/X+1/Y=1/(N!) 的正整数解的组数,其中N≤10^6. 解的组数,应模1e9+7. 输入输出格式 输入格式: ...

  5. 「BZOJ2721」「LuoguP1445」 [Violet]樱花(数论

    题目背景 我很愤怒 题目描述 求方程 $\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$ 的正整数解的组数,其中$N≤10^6$. 解的组数,应模$1e9+7$. 输入输出格 ...

  6. luoguP1445 [Violet]樱花

    链接P1445 [Violet]樱花 求方程 \(\frac {1}{X}+\frac {1}{Y}=\frac {1}{N!}\) 的正整数解的组数,其中\(N≤10^6\),模\(10^9+7\) ...

  7. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m

    给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后 ...

  8. 数论-质数 poj2689,阶乘分解,求阶乘的尾零hdu1124, 求尾零为x的最小阶乘

    /* 要求出[1,R]之间的质数会超时,但是要判断[L,R]之间的数是否是素数却不用筛到R 因为要一个合数n的最大质因子不会超过sqrt(n) 所以只要将[2,sqrt(R)]之间的素数筛出来,再用这 ...

  9. P1445 [Violet]樱花

    传送门 看到题目就要开始愉快地推式子 原式 $\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}$ $\rightarrow \frac{x+y}{xy}=\frac{1}{n! ...

随机推荐

  1. Elasticsearch之curl删除索引库

    关于curl创建索引库的介绍,请移步 Elasticsearch之curl创建索引库 [hadoop@djt002 elasticsearch-2.4.3]$ curl -XPUT 'http://1 ...

  2. .net core2.0 中使用aspectcore实现aop

    一.新建一个web application项目 1.1.添加AspectCore.Extensions.DependencyInjection引用 二.实现AbstractInterceptorAtt ...

  3. Android java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader......couldn't find "libweibosdkcore.so

    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/ ...

  4. ★Java语法(七)——————————循环语句

    package 自我总结; public class 循环语句 { public static void main(String[] args) { // while 循环 // 用法: // whi ...

  5. MySQL 优化之 index_merge (索引合并)

    深入理解 index merge 是使用索引进行优化的重要基础之一.理解了 index merge 技术,我们才知道应该如何在表上建立索引. 1. 为什么会有index merge 我们的 where ...

  6. css基础四

    过渡属性 下面的表格列出了所有的转换属性: 属性 描述 CSS transition 简写属性,用于在一个属性中设置四个过渡属性. 3 transition-property 规定应用过渡的 CSS ...

  7. (转)C#开发微信门户及应用(3)--文本消息和图文消息的应答

    http://www.cnblogs.com/wuhuacong/p/3622636.html 微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下.学习 ...

  8. MVC 返回404,返回图片,流到数组,apk信息

    return HttpNotFound(); byte[] buffer0 = QRCode(); return File(buffer0, @"image/jpeg"); // ...

  9. day37-2元类,单例模式

    目录 元类 造类的第一种形式 class做了什么事 控制元类产生的类 控制元类产生的对象 实例化类 加上元类后类的属性查找顺序 元类控制模版 单例模式 1. 使用类方法的特性 2. 使用装饰器 3. ...

  10. BZOJ 1738: [Usaco2005 mar]Ombrophobic Bovines 发抖的牛 网络流 + 二分 + Floyd

    Description FJ's cows really hate getting wet so much that the mere thought of getting caught in the ...