题目背景

我很愤怒

题目描述

求方程 $\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$ 的正整数解的组数,其中$N≤10^6$。

解的组数,应模$1e9+7$。

输入输出格式

输入格式:

输入一个整数N

输出格式:

输出答案

输入输出样例

输入样例#1: 复制

1439
输出样例#1: 复制

102426508

题解

看到原题面的我也很愤怒。

显然是道数论题,所以我们要去分析它的性质。

$\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}$

$\frac{x+y}{x*y}=\frac{1}{n!}$

$xy-(x+y)*(n!)=0$

$(n!)^2+xy-(x+y)*n!=(n!)^2$

$(x-n!)*(y-n!)=(n!)^2$

设$t=(n!)$

$(x-t)*(y-t)=t^2$

∵$x,y$是正整数,∴$x-t>0$且$y-t>0$

(若要小于0,则$(x-t)$和$(y-t)$中至少要有一个小于$-t$,也就是$x<0$或$y<0$,与题设不符

设$A=(x-t)$,$B=(y-t)$

则有$A*B=t^2=(n!)^2$

所以$A$的方案数就是$(n!)^2$的因子数,也就是一些质因子乘起来的结果。

所以把$(n!)^2$分解质因数,设为$(n!)^2={a_1}^{p_1}*{a_2}^{p_2}...*{a_m}^{p_m}$

则答案为$(p_1+1)*(p_2+1)*...*(p_m+1)$。

  qwerta
P1445 [Violet]樱花 Accepted 代码 C++,.54KB
提交时间 -- ::
耗时/内存 86ms, 2692KB
#include<iostream>
#include<cstdio>
using namespace std;
bool sf[];
int p[];
int main()
{
int n;
scanf("%d",&n);
int tos=;
for(int i=;i<=n;++i)
if(!sf[i])
{
p[++tos]=;//因为是(n!)的平方,所以次数+=2
for(int j=;i*j<=n;++j)
{
int x=i*j;
sf[x]=;
while(x%i==)
{
p[tos]+=;
x/=i;
}
}
}
/*
for(int i=2;i<=n;++i)
{
int x=i;
for(int j=1;j<=tos&&x>1;++j)
{
while(x%st[j]==0)
{
p[j]+=2;
x/=st[j];
}
}
}
*/注释掉的是暴力分解2~n的质因数,亲测T上天
long long ans=,mod=1e9+;
for(int i=;i<=tos;++i)
ans=(ans*(p[i]+))%mod;//统计答案
cout<<ans;
return ;
}

「BZOJ2721」「LuoguP1445」 [Violet]樱花(数论的更多相关文章

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

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

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

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

  3. 众安「尊享e生」果真牛的不可一世么?

    近日,具有互联网基因的.亏损大户(成立三年基本没盈利,今年二季度末亏损近4亿,你能指望它多厉害?).财产险公司—众安推出“尊享e生”中高端医疗保险(财险公司经营中高端医疗真的很厉害?真的是中高端医疗险 ...

  4. XCActionBar 「Xcode 中的 Alfred」

    下载地址:https://github.com/pdcgomes/XCActionBar 基本命令: (1)「command+shift+8」或者双击「command」键可以打开「动作输入框窗口」 ( ...

  5. Git 执行 「fork 出来的仓库」和「最新版本的原仓库」内容同步更新

    当我们在 GitHub 上 fork 出一个仓库后,如果原仓库更新了,此时怎样才能保证我们 fork 出来的仓库和原仓库内容一致呢?我们一般关注的是仓库的 master(主干分支)的内容,通过以下步骤 ...

  6. 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇

    http://www.4gamer.net/games/216/G021678/20140714079/     连载第2回的本回,  Arc System Works开发的格斗游戏「GUILTY G ...

  7. 翻译「C++ Rvalue References Explained」C++右值引用详解 Part1:概述

    本文系对「C++ Rvalue References Explained」 该文的翻译,原文作者:Thomas Becker. 该文较详细的解释了C++11右值引用的作用和出现的意义,也同时被Scot ...

  8. 「Windows MFC 」「Edit Control」 控件

    「Windows MFC 」「Edit Control」 控件

  9. 苹果搜索广告后台大揭秘,最全最细致详解,手把手设置教程「后附官方视频」-b

    WWDC2016 搜索广告分会视频和 PPT 发布了,ASO100 带开发者第一时间了解 Search Ads 后台设置(文末有原声视频). 首先介绍一下搜索广告的模式和竞价规则 广告模式为 CPT( ...

随机推荐

  1. Spring学习十----------Bean的配置之Autowired注解实现

    © 版权声明:本文为博主原创文章,转载请注明出处 @Required -@Required注解适用于bean属性的setter方法 -这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在b ...

  2. List中remove元素的理解

    今天写了个简单的list中remove元素的方法,结果报错... List<String> ll = Arrays.asList("1","2",& ...

  3. HTML中Select的使用详解

    <html><head><SCRIPT LANGUAGE="JavaScript"><!--//oSelect 列表的底部添加了一个新选项 ...

  4. 随机生成指定长度的密码之---Random

    随机生成指定长度的密码思路: 1.密码中可能包含字母,数字,特殊符号,为了区别分别定义常量 2.随机生成密码,自然想到要用到java.util.Random 类 3.定义一个带两个参数的方法,1跟2, ...

  5. 九度OJ 1144:Freckles(斑点) (最小生成树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1538 解决:760 题目描述: In an episode of the Dick Van Dyke show, little Richi ...

  6. php异步任务处理: gearman

    Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡 准备软件包 gearmand-1.1.12.tar.gz gearman-1. ...

  7. C++三种继承方式

    一.三种继承方式 继承方式不同,第一个不同是的是派生类继承基类后,各成员属性发生变化.第二个不同是派生类的对象能访问基类中哪些成员发生变化.表格中红色标注.

  8. turbolink 造成 link_to异常

    link_to  点击之后不刷新不加载文件 send_file 只能在浏览器中打开,而不能下载 解决方法:注释gem turbolink,application.js 中移除turbolink

  9. [STM8L]基于STM8L152的TAB段式LCD液晶驱动的分析 - 单片机干货 - 中国电子技术论坛 - 最好最受欢迎电子论坛!

    [STM8L]基于STM8L152的TAB段式LCD液晶驱动的分析 - 单片机干货 - 中国电子技术论坛 - 最好最受欢迎电子论坛!.md 主控芯片为STM8L152C4T6自带LCD控制器,低功耗系 ...

  10. stm32f429I discovery试用

    从网上了解到stm32f429I discovery可以跑单片机程序也可以跑uclinux,而我恰好喜爱嵌入式开发相关内容, 性价比也较高,所以新入手了这款开发板.开发板官方网页:http://www ...