题目描述

原题来自: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. 利用MD5进行加密

    package com.cn.peitest; import java.io.UnsupportedEncodingException; import java.security.MessageDig ...

  2. spark:reducebykey与groupbykey的区别

    从源码看: reduceBykey与groupbykey: 都调用函数combineByKeyWithClassTag[V]((v: V) => v, func, func, partition ...

  3. hbase:ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet

    hbase连接deug:DEBUG [main-SendThread(bigdata.server1:2181)] - Reading reply sessionid:0x16f764e7f6e000 ...

  4. Docker部署&MySQL部署

    Docker部署 本文采用的是阿里云的centos7 # 更新yum yum update # 安装docker yum install docker # 启动docker systemctl sta ...

  5. [ABP教程]第一章 创建服务端

    Web应用程序开发教程 - 第一章: 创建服务端 关于本教程 在本系列教程中, 你将构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的基于ABP的应用程序. 它是使用以下技术开发 ...

  6. Jenkins自动部署spring boot

    Jenkins自动部署spring boot 背景介绍 本公司属于微小型企业,初期业务量不高,所有程序都写在一个maven项目里面,不过是多模块开发. 分了login模块,service模块,cms模 ...

  7. Getshell

    GetShell 常用免杀大法 一.编码大法 (1).一句话马子本身采用编码 原文:<?php @eval($_GET(a)):?> 转码后:在提交的post的时候可以直接使用\u0026 ...

  8. MongoDB数据库,一些的筛选过滤查询操作和db.updae()更新数据库记录遇到的坑。

    缘由:使用MongoDB时遇到一些需要查询/更新操作指定某些字段的业务场景 查询和更新指定字段就需要进行简单的筛选和过滤,也能在大数据量时减少查询消耗时间 1. 查询数据库某些指定字段,同时默认返回_ ...

  9. django使用缓存之drf-extensions

    使用方法:1.直接添加装饰器@cache_response该装饰器装饰的方法有两个要求: 它必须是继承了rest_framework.views.APIView的类的方法 它必须返回rest_fram ...

  10. Redis 实战 —— 02. Redis 简单实践 - 文章投票

    需求 功能: P15 发布文章 获取文章 文章分组 投支持票 数值及限制条件 P15 如果一篇文章获得了至少 200 张支持票,那么这篇文章就是一篇有趣的文章 如果这个网站每天有 50 篇有趣的文章, ...