bzoj 2721: [Violet 5]樱花 (线性筛+质因数分解)
来源:互联网 发布:淘宝联盟分享能赚钱吗 编辑:程序博客网 时间:2024/05/18 03:36
2721: [Violet 5]樱花
Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 536 Solved: 317
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
Source
interviewstreet--EQUATIONS
题解:线性筛+质因数分解
这道题的答案是(n!)^2的约数个数,然而我并不知道为什么,找了1个多小时的规律。。。。。
还是说一下靠谱的做法吧。
设n!=z,y=z+d
1/x+1/y=1/z => 1/x+1/(z+d)=1/z
(x+z+d)/(x*z+x*d)=1/z
z*(x+z+d)=x*z+d*z
z^2+d*z=d*x
x=z^2/d+z 因为x是正整数,所以d是z^2的因数。。。。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define N 1000003#define p 1000000007#define LL long longusing namespace std;int n,prime[N],mp[N],num[N],pd[N];void init(){for (int i=2;i<=1000000;i++) {if (!pd[i]) prime[++prime[0]]=i,mp[i]=prime[0];for (int j=1;j<=prime[0];j++){if (i*prime[j]>1000000) break;pd[i*prime[j]]=1;if (i%prime[j]==0) break;}}}void calc(int x,int val){int k=x;for (int i=1;prime[i]*prime[i]<=k;i++) if (k%prime[i]==0) { while (k%prime[i]==0) num[i]++,k/=prime[i]; }if (k>1) num[mp[k]]++;}int main(){init(); scanf("%d",&n);for (int i=1;i<=n;i++) calc(i,1);LL ans=1;for (int i=1;i<=prime[0];i++) ans=ans*(LL)(num[i]*2+1)%p;printf("%I64d\n",ans);}
0 0
- bzoj 2721: [Violet 5]樱花 (线性筛+质因数分解)
- bzoj 2721: [Violet 5]樱花 线性筛
- BZOJ 2721 [Violet 5]樱花
- 2721: [Violet 5]樱花 思路题 线性筛素数
- BZOJ 2721 Violet 5 樱花 数论
- [数学 欧拉筛] BZOJ 2721 [Violet 5]樱花
- Bzoj 2721 [Violet 5]樱花 [数论]
- bzoj 3813: 奇数国 (线段树+质因数分解+线性筛+线性逆元)
- 2721: [Violet 5]樱花|约数个数
- [BZOJ2721][Violet 5]樱花(数论)
- 【Violet 5】【BZOJ2721】樱花
- [bzoj2721][Violet 5]樱花
- 【bzoj2721】【Violet 5】樱花【数论】
- NKOJ 3800 分解质因数(欧拉函数+线性筛)
- BZOJ 1485 HNOI 2009 有趣的数列 卡特兰数 线性筛法分解质因数
- BZOJ2721 樱花 [线性筛]
- 分解质因数(5分)
- 分解质因数(5分)
- CCF之折点计数(java)
- 【C语言简单说】二:第一个C语言程序详解(3)
- 二叉树 前序遍历的非递归实现 中序遍历的非递归实现 后序遍历的非递归实现 创建二叉树
- 白话空间统计二十三:回归分析(三)
- 在虚幻UE4中不同VR头盔的FOV和分屏处理
- bzoj 2721: [Violet 5]樱花 (线性筛+质因数分解)
- ACID补充
- OD调试之总结
- CCF之俄罗斯方块(java)
- 新JEP将简化Java类型变异
- 架构师米洛:你不经意的职场坏姿势会损坏你的身体
- 7、SQL Server:sql server 获取每一个类别中值最大的一条数据
- BitmapFactory中常用的几个静态方法
- 蓝桥杯算法提高 最大乘积