洛谷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/n!​

等式两边同乘x*n!*(n!+k)得 n!(n!+k)+xn!=x(n!+k)

移项得 n!(n!+k)=x(n!+k)−xn!=xk

x=n!(n!+k)​/k=(n!)2​/k+n!

因为x为正整数 所以(n!)2​/k+n!为正整数0.

因为n!为正整数 所以只要(n!)2​/k为正整数即可

因为k=y-n!   而y是可以取到任意正整数的,所以k也可以取到任意正整数,所以这道题就变成了求(n!)2的约数个数

思路

求约数个数 线筛的时候我们已经预处理出每个数的最小质因子 直接for一遍1−n 不断除以它的最小公约数 直到变成1为止 同时每次都使记录质因数的指数的数组++

这就完成了对每个数分解质因数最后把这些质因数的指数+1乘起来就行了 时间复杂度O(nlogn)

代码

#include<iostream>
#include<cstdio>
using namespace std;
#define Mod 1000000007
#define maxn 1000010
int n,ans=,cnt;
int p[maxn],c[maxn],v[maxn];
void primes(int x)
{
for(int i=;i<=x;i++)
{
if(!v[i])
{
v[i]=i;
p[++cnt]=i;
}
for(int j=;j<=cnt;j++)
{
if(p[j]>v[i]||p[j]*i>x) break;
v[p[j]*i]=p[j];
}
}
}
int main()
{
scanf("%d",&n);
primes(n);//质因数分解 处理出每个数的最小质因子
for(int i=;i<=n;i++)
for(int j=i;j!=;j/=v[j])
c[v[j]]++;//求质因数指数
for(int i=;i<=n;i++)
ans=(long long)ans*(c[i]*+)%Mod;
printf("%d",ans);
}

【题解】洛谷P1445 [Violet]樱花 (推导+约数和)的更多相关文章

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

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

  2. 洛谷 P1445 [Violet]樱花

    #include<cstdio> #include<algorithm> #include<cstring> #include<vector> usin ...

  3. BZOJ2721或洛谷1445 [Violet]樱花

    BZOJ原题链接 洛谷原题链接 其实推导很简单,只不过我太菜了想不到...又双叒叕去看题解 简单写下推导过程. 原方程:\[\dfrac{1}{x} + \dfrac{1}{y} = \dfrac{1 ...

  4. 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 ...

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

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

  6. 题解-洛谷P6788 「EZEC-3」四月樱花

    题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y ...

  7. 题解 洛谷P5018【对称二叉树】(noip2018T4)

    \(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...

  8. 题解 洛谷P2158 【[SDOI2008]仪仗队】

    本文搬自本人洛谷博客 题目 本文进行了一定的更新 优化了 Markdown 中 Latex 语句的运用,加强了可读性 补充了"我们仍不曾知晓得 消失的 性质5 ",加强了推导的严谨 ...

  9. 题解 洛谷 P3396 【哈希冲突】(根号分治)

    根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...

随机推荐

  1. 进入保护模式(一)——《x86汇编语言:从实模式到保护模式》读书笔记12

    之前已经做了一些理论上的铺垫,这次我们就可以看代码了. 一.代码清单 ;代码清单11-1 ;文件名:c11_mbr.asm ;文件说明:硬盘主引导扇区代码 ;创建日期:2011-5-16 19:54 ...

  2. gcc链接非标准(non-standard)命名库

    标准命名库: -lnamespace 标准链接库以lib开头, 并以so/a结尾. example gcc test.c -o test -L. -lhello 非标准命名库: -l:libname ...

  3. LINQ和.NET数据访问

    .NET数据访问 在.NET中对于数据的访问大致有三个层面,数据访问层.内存数据集.业务逻辑层.数据层,包括了XML配置文件以及一些常用的数据库(使用SQL语句):内存数据集,主要是DataSet数据 ...

  4. 世界、国家、省、城市SQL

    共享一份 世界.国家.省.城市最全的SQL(mysql可直接使用),笔者是花了下载币下载的 下载SQL #  pid=0 获取所有国家 #  pid=99999999    获取中国的省.自治区.直辖 ...

  5. linux修改文件权限命令(chmod)

    chmod命令是用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限. 该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. 1.文字设定法 chmod ...

  6. Python爬虫之三种数据解析方式

    一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...

  7. JS基础学习——对象

    JS基础学习--对象 什么是对象 对象object是JS的一种基本数据类型,除此之外还包括的基本数据类型有string.number.boolean.null.undefined.与其他数据类型不同的 ...

  8. 小程序 - 图片列表显示lazyload效果

    在做一个短视频平台,涉及到的都是一些列表模块.因为小程序没有提供lazyload api,所以只能自己写一个了... 开发涉及 <scroll-view></scroll-view& ...

  9. html5 嵌入元素 img map areaiframe embed meter object meter

    <img src="路径">            src 路径可以是img.jpg 也可以是 绝对和相对路径+img.jpg <img src="路径 ...

  10. Java NIO(二) Channel

    Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. 通道可以异步地读写. 通道中的数据总是要先读到一个Buffer,或者总是要从一个Bu ...