2721: [Violet 5]樱花

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 599  Solved: 354

Description

Input

Output

Sample Input

Sample Output

HINT

Source

【分析】

  之前推出来然后几天直接打然后把$n!^2$的约数记成$n^2$的约数也是醉、、

  先通分。

  则$(x+y)*n!=x*y$

  设$g=gcd(x,y)$

  则$(x'+y')*n!=x'*y'*g$

  显然$gcd(x'+y',x')=gcd(x'+y',y')=1$

  所以$x'*y'|n!$ 、$(x'+y')|g$

  设$g=k(x'+y')$,则$n!=x'*y'*k$

  枚举$n!$的互质约数对$(x',y')$,则k就确定了,所以只是问$n!$的互质约数对的个数。

  把$n!$分解质因数,假设$n!=p1^{r1}+p2^{r2}+...+pn^{rn}$

  $f[i]$表示前i个p对答案的贡献,则$f[i]=f[i-1]*(2*ri+1)$

  则答案就等于$\Pi (2*ri+1)$,也就是$(n!)^{2}$的约数个数。【别人好像直接推出这个。。。?

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define Maxn 1000010
#define Mod 1000000007
#define LL long long int n;
int pri[Maxn],pl,mn[Maxn];
bool vis[Maxn];
void init()
{
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++)
{
if(!vis[i]) pri[++pl]=i,mn[i]=i;
for(int j=;j<=pl;j++)
{
if(i*pri[j]>n) break;
vis[i*pri[j]]=;
mn[i*pri[j]]=pri[j];
if(i%pri[j]==) break;
}
}
} int sm[Maxn];
void cal(int x)
{
if(x==) return;
sm[mn[x]]++;
cal(x/mn[x]);
} int main()
{
int ans=;
scanf("%d",&n);
init();
memset(sm,,sizeof(sm));
for(int i=;i<=n;i++) cal(i);
for(int i=;i<=n;i++) if(sm[i]) ans=1LL*ans*(*sm[i]+)%Mod;
printf("%d\n",ans);
return ;
}

2017-04-24 14:22:56

【BZOJ 2721】 2721: [Violet 5]樱花 (筛)的更多相关文章

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

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

  2. 2721: [Violet 5]樱花

    2721: [Violet 5]樱花 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 547  Solved: 322[Submit][Status][D ...

  3. 【BZOJ2721】[Violet 5]樱花 线性筛素数

    [BZOJ2721][Violet 5]樱花 Description Input Output Sample Input 2 Sample Output 3 HINT 题解:,所以就是求(n!)2的约 ...

  4. BZOJ_2721_[Violet 5]樱花_数学

    BZOJ_2721_[Violet 5]樱花_数学 Description Input Output $\frac{1}{x}+\frac{1}{y}=\frac{1}{m}$ $xm+ym=xy$ ...

  5. [BZOJ 2721] [Violet 5] 樱花 【线性筛】

    题目链接:BZOJ - 2721 题目分析 题目大意:求出 1 / x + 1 / y = 1 / n! 的正整数解 (x, y) 的个数. 显然,要求出正整数解 (x, y) 的个数,只要求出使 y ...

  6. BZOJ 2721: [Violet 5]樱花

    (X-N)(Y-N)=N^2 #include<cstdio> using namespace std; const int mod=1e9+7; int n,cnt,isprime[10 ...

  7. 2721: [Violet 5]樱花|约数个数

    先跪一发题目背景QAQ 显然x,y>n!,然后能够设y=n!+d 原式子能够化简成 x=n!2d+n! 那么解的个数也就是n!的因子个数,然后线性筛随便搞一搞 #include<cstdi ...

  8. BZOJ2721 [Violet 5]樱花

    先令n! = a: 1 / x + 1 / y = 1 / a  =>  x = y * a / (y - a) 再令 k = y - a: 于是x = a + a ^ 2 / k  => ...

  9. 【bzoj2721】[Violet 5]樱花

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=2721 好久没做数学题了,感觉有些思想僵化,走火入魔了. 这道题就是求方程$ \frac ...

随机推荐

  1. hdu 1495 非常可乐 (广搜)

    题目链接 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶 ...

  2. js操作控制iframe页面的dom元素

    1.代码1  index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  3. Python练习-一辆购物车的寂寞都是Alex的错

    Alex大神的购物车需求: 商品列表,选择商品后加入购物车,扣款显示余额,如余额不足则提示购买此商品还需充值的金额,退出后自动结账显示余额; # 编辑者:闫龙 #弱鸡购物车程序,需求:定义金额,选择商 ...

  4. flask插件系列之flask_uploads上传文件

    前言 flask可以实现上传文件和下载文件的基本功能,但如果想要健壮的功能,使用flask_uploads插件是十分方便的. 安装 pip install flask_uploads 基本使用 # e ...

  5. Python_oldboy_自动化运维之路(八)

    本节内容: 列表生成式,迭代器,生成器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器,生成器 1.列表生成式 #[列表生成] #1.列 ...

  6. jmeter之数据库

    https://www.cnblogs.com/ShadowXie/p/6007515.html

  7. 写在用Mac进行Java开发之前

    在用Mac进行开发之前,建议浏览以下几个概念. 1. 几个基础概念 - 计算机 计算机(computer)俗称电脑,发明者是约翰·冯·诺依曼,计算机是现代一种用于高速计算的电子计算机器,可以进行数值计 ...

  8. Unix IPC之Posix消息队列(3)

    struct mq_attr { long mq_flags; /* message queue flag : 0, O_NONBLOCK */ long mq_maxmsg; /* max numb ...

  9. (一) solr的安装与配置

    载solr文件压缩包,并解压 ,要运行solr服务之前需要先安装jdk,具体安装过程可以参看下面这篇文章: http://www.cnblogs.com/xiazh/archive/2012/05/2 ...

  10. gtk+学习笔记(八)

    框架(Frames)可以用于在盒子中封装一个或一组构件,框架本身还可以有一个标签.标签的位置和盒子的风格可以灵活改变. 框架可以用下面的函数创建: GtkWidget *gtk_frame_new( ...