51nod-1189: 阶乘分数
【传送门:51nod-1189】
简要题意:
给出一个数n,求出有多少个正整数x,y(0<x<=y)满足$1/n!=1/x+1/y$
题解:
一开始还以为不可做
结果推一下柿子就会了
$1/n!=1/x+1/y$可以转化为$xy=n!*(x+y)$
又可以转化为$xy-n!*(x+y)=0$,得到$xy-n!*(x+y)+n!^2=n!^2$,得到$(x-n!)*(y-n!)=n!^2$
woc,水题
直接将n!质因数分解,然后每个质因数的指数*2(因为是n!的平方),求因数个数就行了
因为要求x<=y,所以将(ans+1)/2,这部分用逆元求即可
参考代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
LL Mod=1e9+;
int prime[];
int v[],m;
void get_p(int n)
{
memset(v,,sizeof(v));
m=;
for(int i=;i<=n;i++)
{
if(v[i]==)
{
prime[++m]=i;
v[i]=i;
}
for(int j=;j<=m;j++)
{
if(prime[j]>n/i||prime[j]>v[i]) break;
v[i*prime[j]]=prime[j];
}
}
}
LL p_mod(LL a,LL b)
{
LL ans=;
while(b!=)
{
if(b%==) ans=ans*a%Mod;
a=a*a%Mod;b/=;
}
return ans;
}
int main()
{
int n;
scanf("%d",&n);
get_p(n);
LL sum=,ans=;
for(int i=;i<=m;i++)
{
LL d=prime[i];sum=;
while(d<=n)
{
sum=(sum+n/d)%Mod;
d*=prime[i];
}
sum=(sum*2LL%Mod+)%Mod;
ans=ans*sum%Mod;
}
ans=(ans+)%Mod;
LL ny=p_mod(2LL,Mod-);
printf("%lld\n",ans*ny%Mod);
return ;
}
51nod-1189: 阶乘分数的更多相关文章
- 51 nod 1189 阶乘分数
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1189 题目思路: 1/n! = 1/x +1/y ==> ...
- 51nod 1189 算术基本定理/组合数学
www.51nod.com/onlineJudge/questionCode.html#!problemId=1189 1189 阶乘分数 题目来源: Spoj 基准时间限制:1 秒 空间限制:131 ...
- 51nod1189 阶乘分数
(x-n!)(y-n!)=n!2 ans=t[n]+1.t表示的是n!2的小于n!的约数个数.n!2=p1a1*p2a2*p3a3...t[n]=(a1+1)*(a2+1)...-1 /2; 2对于n ...
- 51Nod 1003 阶乘后面0的数量(数学,思维题)
1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720 ...
- 51nod 1187 寻找分数
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 51nod 1257 01分数规划/二分
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1257 1257 背包问题 V3 基准时间限制:3 秒 空间限制:1310 ...
- pku 1401 Factorial 算数基本定理 && 51nod 1003 阶乘后面0的数量
链接:http://poj.org/problem?id=1401 题意:计算N!的末尾0的个数 思路:算数基本定理 有0,分解为2*5,寻找2*5的对数,2的因子个数大于5,转化为寻找因子5的个数. ...
- 51Nod 1003 阶乘后面0的数量 | 思维
题意:n的阶乘后面0的个数,如果直接算出阶乘再数0的数量一定会超时的. 因为10=2*5,所以求出5贡献的次数就行. #include "bits/stdc++.h" using ...
- 51nod 1003 阶乘后面0的数量
每一个 2 与一个 5 相乘,结果就增加一个零. 所以求 n! 后面的连续零的个数,其实就是求其中相乘的数含有因子每对因子 2 与 5 的个数. 又因为从1到某个数,所含 2 的个数比 5 多,所以 ...
- 51nod 1189
题目 神犇题解 表示自己数论渣成狗...膜拜神犇. n!*(x+y)=x*y n!^2=(x-n!)*(y-n!) 那么求出n!^2的因数个数就可以了.
随机推荐
- fensorflow 安装报错 DEPENDENCY ERROR
1.错误信息 DEPENDENCY ERROR The target you are trying to run requires an OpenSSL implementation. Your sy ...
- Windows里正确安装Zookeeper以服务运行
不多说,直接上干货! 为什么要在Win下来安装Zookeeper呢? 其实玩过大数据的人很清楚,在Linux下我更不说了.在win下,如Disconf .Dubbo等应用. 所以,它的应用是非常广的. ...
- [using_microsoft_infopath_2010]Chapter5 为表单添加逻辑规则
本章概要: 1.在表单中使用逻辑和验证,不写代码 2.使用规则任务板 3.添加表单条件格式 4.通过函数和公式添加更加高级的规则 5.通过对驶入使用规则创建直观的用户界面
- Java IO(三) 之 FileInputStream
前言: 对于文件系统中的文件.都能够使用FileInputStream流类以二进制的形式进行读取.可是因为Java本身的定位在JVM之上,没有处理计算机底层的能力.因此一些涉及底层处理的方法都是使用n ...
- iOS给label加入下划线
UILabel *myLabel = [[UILabelalloc] ,, , )]; NSMutableAttributedString *content = [[NSMutableAttribut ...
- 认识一下Kotlin语言,Android平台的Swift
今天在CSDN首页偶然看到一个贴子JetBrains正式公布Kotlin 1.0:JVM和Android上更好用的语言 看完后,感觉Kotlin语法非常简洁,有一系列动态语言的特点,Lambda表达式 ...
- 解读HDFS(转载)
是蛮久木有写过关于hadoop的博客了额,虽然最近也看了一些关于linux的基础知识,但似乎把这个东西忘记了,其实时不时回顾一下以前的知识还是蛮有意思的,且行且忆! 我们Hadoop 主要由HDFS和 ...
- javascript系列-class8.BOM
1.浏览器对象模型( browser object model ) 什么是BOM? 提起BOM就不得不提起JavaScript的构成.ECMAScript为JavaScript的核心,但是要 ...
- javascript系列-class6.String类型
观察淘宝网商品数据 有一个东西叫服务器>>>>js的作用重要作用之一>>>>交互>>>>人机交互(事件)>>&g ...
- BZOJ 2005 容斥原理
思路: 题目让求的是 Σgcd(i,j) (i<=n,j<=m) n,m不同 没法线性筛 怎么办? 容斥原理!! f[x]表示gcd(i,j)=x的个数 g[x]为 存在公约数=x 的数对 ...