LOJ10202樱花——数论
题目描述
输入格式
一个整数 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樱花——数论的更多相关文章
- Luogu1445 [Violet]樱花 ---- 数论优化
Luogu1445 [Violet]樱花 一句话题意:(本来就是一句话的) 求方程 $\frac{1}{X} + \frac{1}{Y} = \frac{1}{N!}$ 的正整数解的组数,其中$N \ ...
- 【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. 所以解的数量就是 ...
- bzoj 2721[Violet 5]樱花 数论
[Violet 5]樱花 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 671 Solved: 395[Submit][Status][Discuss ...
- 【BZOJ2721】樱花(数论)
[BZOJ2721]樱花(数论) 题面 BZOJ 题解 先化简一下式子,得到:\(\displaystyle n!(x+y)=xy\),不难从这个式子中得到\(x,y\gt n!\). 然后通过\(x ...
- 「BZOJ2721」「LuoguP1445」 [Violet]樱花(数论
题目背景 我很愤怒 题目描述 求方程 $\frac{1}{x}+\frac{1}{y}=\frac{1}{N!}$ 的正整数解的组数,其中$N≤10^6$. 解的组数,应模$1e9+7$. 输入输出格 ...
- 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 ...
- 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 ...
- 【数论】[因数个数]P4167樱花
题目描述 求不定方程 \(\frac {1}{x} + \frac{1}{y} = \frac{1}{n!}\)的正整数解的个数 \(n \leq 100^6\) Solution 化简得 \(x * ...
- bzoj2721 [Violet5]樱花
bzoj2721 [Violet 5]樱花 给出 \(n\) 求 \(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\) 的正整数解数量 \(\bmod (10^9+7)\) ...
随机推荐
- 使用@Param注解
1,使用@Param注解 当以下面的方式进行写SQL语句时: @Select("select column from table where userid = #{userid} " ...
- react脚手架抽离webpack报错解决
我们在写react项目的时候,可能原有的webpack配置不满足我们的需求,需要自己去配置,可是你在创建脚手架的时候并不能在外部找到webpack文件,脚手架的webpack文件在node_modul ...
- 零基础学习qt4 第七章的第一个例子
#include <QtGui> #include "extensionDlg.h" ExtensionDlg::ExtensionDlg(QWidget *paren ...
- 超级电容(Supercapacitor) 和电池的比较
之前看到同事在电路设计里使用了超级电容来进行供电,好奇为什么没有用到普通的电池,于是就是找了找两个的区别.有篇文章讲得挺好,所以就直接翻译一下. 超级电容有点像普通电池和一般电容的结合体,能比一般的电 ...
- AOP的姿势之 简化混用 MemoryCache 和 DistributedCache 的方式
0. 前言 之前写了几篇文章介绍了一些AOP的知识, 但是还没有亮出来AOP的姿势, 也许姿势漂亮一点, 大家会对AOP有点兴趣 内容大致会分为如下几篇:(毕竟人懒,一下子写完太累了,没有动力) AO ...
- 常用的Git命令清单
目录 名词解释 开卷必读 一. 新建代码库 二.配置 三. 忽略某个文件的改动 四. 增加/删除文件 五. 代码提交 六. 分支 七. 标签 八. 查看信息 九. 远程同步 十. 撤销 十一. Git ...
- java容器-Collection
1.介绍 collection<E>是java中容器的最主要的接口,该接口继承于Iterable<E>,使得java中所有实现Collection<E>的容器 ...
- java之volatile
一.谈谈对volatile的理解 volatile是java虚拟机提供的轻量级的同步机制 保证可见性.不保证原子性.禁止指令重排 1.可见性理解:所有线程存放都是主内存的副本(比如某个变量值为25), ...
- 测试如何区分前后端bug
当我们测试到前后端分离的项目时,可能就会想这个bug我到底应该指给谁,是前端的问题还是后端的呢,为了让自己更专业,分清前后端问题还是很重要的. 1.如图商品详情中显示[件装:1,中包装:2 ]但是在后 ...
- MFC(c++大作业)基本对话框的使用(求平均成绩)
OOPEx2Dlg.cpp // OOPEx2Dlg.cpp : 实现文件 // #include "stdafx.h" #include "OOPEx2.h" ...