博主决定更博文啦


这道题一开始没什么思路啊qwq

要求 \(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\) 的正整数解总数

首先通分,得 $$\frac{x+y}{xy}=\frac{1}{n!}$$

然后移项,得 $$n!(x+y)=xy$$

↑止步于此↑ $$n!(x+y)-xy=0$$

这里令\(y=n!+k(k\in N^*)\),因为由原方程得出\(y\)是大于\(n!\)的

原方程变为 $$n!(x+(n!+k))-x(n!+k)=0$$ $$(n!)^2+xn!+kn!-xn!-xk=0$$ $$xk-kn!=(n!)^2$$ $$k(x-n!)=(n!)^2$$ $$x=\frac{(n!)^2}{k}+n!$$

我们发现\(x,y\)一一对应废话

且\(x\)为正整数

所以\(k\)为\((n!)^2\)的约数

所以答案就是\((n!)^2\)的约数个数

思维僵化,这篇题解都是看别的大佬题解写的orz

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
#include<ctime>
#include<queue>
#include<map>
#define LL long long
#define il inline
#define re register using namespace std;
const LL mod=1000000007;
il LL rd()
{
re LL x=0,w=1;re char ch;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
int prm[200010],pp[1000010],tt,n; //pp为某个数的最小质因子
LL ans=1,an[1000010]; int main()
{
n=rd();
for(int i=2;i<=n;i++)
{
if(!pp[i]) pp[i]=i,prm[++tt]=i;
for(int j=1;j<=tt&&i*prm[j]<=n;j++)
{
pp[i*prm[j]]=prm[j];
if(i%prm[j]==0) break;
}
int x=i;
while(x>1)
{
++an[pp[x]];
x/=pp[x];
}
}
for(int i=1;i<=n;i++) ans=(ans*((an[i]<<1)|1))%mod;
printf("%lld\n",ans);
return 0;
}

luogu P1445 [Violet]嘤F♂A的更多相关文章

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

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

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

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

  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:https://www.luogu.org/problemnew/show/P1445 推导过程 1/x+1/y=1/n! 设y=n!+k(k∈N∗) 1/x​+1/(n!+k)​=1 ...

  5. P1445 [Violet]樱花

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

  6. Luogu P4168 [Violet]蒲公英 分块

    这道题算是好好写了.写了三种方法. 有一个好像是$qwq$$N\sqrt(N)$的方法,,但是恳请大佬们帮我看看为什么这么慢$qwq$(后面的第三种) 注:$pos[i]$表示$i$属于第$pos[i ...

  7. Luogu P4169 [Violet]天使玩偶/SJY摆棋子

    传送门 二维平面修改+查询,cdq分治可以解决. 求关于某个点曼哈顿距离(x,y坐标)最近的点——dis(A,B) = |Ax-Bx|+|Ay-By| 但是如何去掉绝对值呢? 查看题解发现假设所有的点 ...

  8. luogu P4168 [Violet]蒲公英

    嘟嘟嘟 分块经典题竟然是一道黑题…… 分块求区间众数的大体思想是对于询问区间[L, R],预处理出这中间的整块的众数,然后统计两边零散的数在[L, R]中出现的次数,最后取出现次数最多且最小的数. 因 ...

  9. 洛谷 P1445 [Violet]樱花

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

随机推荐

  1. Bootstrap媒体对象

    前面的话 在Web页面或者说移动页面制作中,常常看到图文混排效果,图片居左(或居右),内容居右(或居左)排列.常常把这样的效果称为媒体对象.可以说它是一种抽象的样式,可以用来构建不同类型的组件.本文将 ...

  2. pinv

    moore-penrose pseudoinverse of matrix伪逆

  3. 自学Linux Shell11.1-shell概述

    点击返回 自学Linux命令行与Shell脚本之路 11.1-shell概述 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计 ...

  4. Android 判定手机是否root

    Android获取手机root的状态 package com.app.demo; import java.io.File; import android.app.Activity; import an ...

  5. [AHOI2014/JSOI2014] 解题报告

    [AHOI2014/JSOI2014] 奇怪的计算器 一个很关键的结论,任何时候每个数的相对大小是不变的. 于是可以把这个相对大小当成线段树的权值,每次只需要维护一下区间极值和tag就好了,关于操作四 ...

  6. intest

    /* ============================================================================ Name : http.c Author ...

  7. 内存分布图,errno

    输出错误,errno是默认的全局变量 错误处理函数: 错误号:errno perror函数:        void perror(const char *s); strerror函数:        ...

  8. Apache模块 mod_proxy

    转: Apache模块 mod_proxy 转自http://www.php100.com/manual/apache2/mod/mod_proxy.html Apache模块 mod_proxy 说 ...

  9. MyEclipse 检出新项目后,如果项目名称签名有个红色感叹号

    MyEclipse 检出新项目后,如果项目名称签名有个红色感叹号,那么看 Problems中的错误提示(如果找不到Problems窗口,点 菜单栏的 Window——Reset Perspective ...

  10. POJ1742Coins(多重背包)

    Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 32309   Accepted: 10986 Descripti ...