题目描述

原题来自:HackerRank Equations

求不定方程:

1/x+1/y=1/n!

的正整数解 (x,y) 的数目。

输入格式

一个整数 n 。

输出格式

一个整数,表示有多少对 (x,y) 满足题意。答案对 1e9+7 取模。

样例

样例输入

2

样例输出

3

样例说明

共有三个数对 (x,y) 满足条件,分别是 (3,6),(4,4) 和 (6,3)。

数据范围与提示

对于 30% 的数据,n<=100;
对于全部数据,n<=1e6。

___________________________________________________________________

数论题,关键一步真的想不到!

由于题目是正整数解,所以x,y都大于n

题目很容易化为n!=xy/(x+y)

由于x,y大于n!。所以x设为n!+a,y设为n!+b。

上面的式子就可以化为(n!)^2=a*b

也就是上面的式子,a,b有多少中解!

所以,首先求出n中的质数,然后求出所有的质数在n!中出现的次数,而(n!)^2中的后的质数的个数要乘以2,让后就是求所有因数的个数。

___________________________________________________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=1e6;
4 int n;
5 int prime[maxn],cnt[maxn];
6 bool sz[maxn];
7 int js;
8 void getprime(int n)
9 {
10 sz[0]=sz[1]=1;
11 for(int i=2;i<=n;++i)
12 {
13 if(sz[i]==0)prime[js++]=i;
14 for(int j=0;j<js&&prime[j]*i<=n;++j)
15 {
16 sz[prime[j]*i]=1;
17 if(i%prime[j]==0)break;
18 }
19 }
20 }
21 void fenjie(int x)
22 {
23 for(int i=0;prime[i]*prime[i]<=x;++i)
24 while(x%prime[i]==0)
25 {
26 x/=prime[i];
27 cnt[prime[i]]++;
28 }
29 if(x!=1)cnt[x]++;
30 }
31 long long ans=1;
32 int main()
33 {
34 cin>>n;
35 getprime(n);
36 for(int i=2;i<=n;++i)fenjie(i);
37 for(int i=2;i<=n;++i)ans=(ans*((cnt[i]<<1)+1))%1000000007;
38 cout<<ans;
39 return 0;
40 }

LOJ10202樱花——数论的更多相关文章

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

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

  2. 【bzoj2721】[Violet 5]樱花 数论

    题目描述 输入 输出 样例输入 2 样例输出 3 题解 数论 设1/x+1/y=1/m,那么xm+ym=xy,所以xy-xm-ym+m^2=m^2,所以(x-m)(y-m)=m^2. 所以解的数量就是 ...

  3. bzoj 2721[Violet 5]樱花 数论

    [Violet 5]樱花 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 671  Solved: 395[Submit][Status][Discuss ...

  4. 【BZOJ2721】樱花(数论)

    [BZOJ2721]樱花(数论) 题面 BZOJ 题解 先化简一下式子,得到:\(\displaystyle n!(x+y)=xy\),不难从这个式子中得到\(x,y\gt n!\). 然后通过\(x ...

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

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

  6. 2018.10.26 bzoj2721: [Violet 5]樱花(数论)

    传送门 推一波式子: 1x+1y=1n!\frac 1 x+\frac 1 y=\frac 1 {n!}x1​+y1​=n!1​ =>xy−x∗n!−y∗n!xy-x*n!-y*n!xy−x∗n ...

  7. BZOJ2721 Violet5樱花(数论)

    有(x+y)n!=xy.套路地提出x和y的gcd,设为d,令ad=x,bd=y.则有(a+b)n!=abd.此时d已是和a.b无关的量.由a与b互质,得a+b与ab互质,于是将a+b除过来得n!=ab ...

  8. 【数论】[因数个数]P4167樱花

    题目描述 求不定方程 \(\frac {1}{x} + \frac{1}{y} = \frac{1}{n!}\)的正整数解的个数 \(n \leq 100^6\) Solution 化简得 \(x * ...

  9. bzoj2721 [Violet5]樱花

    bzoj2721 [Violet 5]樱花 给出 \(n\) 求 \(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\) 的正整数解数量 \(\bmod (10^9+7)\) ...

随机推荐

  1. setHeader方法的参数说明

    转自:http://blog.sina.com.cn/s/blog_510fdc8b0100v8sg.html response.setHeader 是用来设置返回页面的头 meta 信息, 使用时 ...

  2. 深入理解Redis系列之持久化

    redis持久化配置 redis.conf // RDB配置 save 900 1 save 300 10 save 60 10000 // AOF配置 appendonly yes //AOF三种同 ...

  3. 粉丝投稿!从2月份的面试被拒到如今的阿里P7,说一说自己学java以来的经验!

    个人近期面试情况 今年二月以来,我的面试除了一个用友的,基本其他都被毙了,可以说是非常残酷的.其中有很多自己觉得还面的不错的岗位,比如百度.跟谁学.好未来等公司.说实话,打击比较大. 情况基本上是从三 ...

  4. DML、DDL、DCL

    总体解释:DML(data manipulation language):       它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据 ...

  5. 「译」使用 System.Net.Http.Json 高效处理Json

    在这篇文章,我将介绍一个名为 System.Net.Http.Json 的扩展库,它最近添加到了 .NET 中,我们看一下这个库能够给我们解决什么问题,今天会介绍下如何在代码中使用. 在此之前我们是如 ...

  6. Linux 路由 静态路由

    Linux 路由 静态路由 目录 Linux 路由 静态路由 一.临时生效,使用命令route A.添加到主机的路由 B.添加到网络的路由 C.添加默认路由 D.删除路由 E.查看所有路由信息 二.临 ...

  7. Failed to create Spark client for Spark session

    最近在hive里将mr换成spark引擎后,执行插入和一些复杂的hql会触发下面的异常: org.apache.hive.service.cli.HiveSQLException: Error whi ...

  8. Logstash学习之路(四)使用Logstash将mysql数据导入elasticsearch(单表同步、多表同步、全量同步、增量同步)

    一.使用Logstash将mysql数据导入elasticsearch 1.在mysql中准备数据: mysql> show tables; +----------------+ | Table ...

  9. 树莓派(4B)新手入门教程

    前期准备 必要物料 树莓派4B 主机 Type-C 电源 内存卡(8G+) 一般建议一步到位64G 系统镜像 镜像写入工具 下载地址 镜像下载 官方下载地址: https://www.raspberr ...

  10. .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ HelloWorld)--学习笔记

    2.6.3 RabbitMQ -- HelloWorld 发送端 接收端 rabbitmq container 发送信息 https://www.rabbitmq.com/tutorials/tuto ...