博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2721: [Violet 5]樱花|约数个数
阅读量:4953 次
发布时间:2019-06-12

本文共 1096 字,大约阅读时间需要 3 分钟。

先跪一发题目背景QAQ

显然x,y>n!,然后能够设y=n!+d
原式子能够化简成

x=n!2d+n!
那么解的个数也就是
n!的因子个数,然后线性筛随便搞一搞
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define N 1000008#define mod 1000000007using namespace std;int sc(){ int i=0,f=1; char c=getchar(); while(c>'9'||c<'0'){ if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9')i=i*10+c-'0',c=getchar(); return i*f;}long long ans=1;int lo[N],low[N],a[N],prime[N],s[N],top;int sum[N],n;void pre(int n){ for(int i=2;i<=n;i++) { if(!a[i]) s[prime[++top]=low[i]=lo[i]=i]=1; for(int j=1;prime[j]*i<=n;j++) { a[i*prime[j]]=1; lo[i*prime[j]]=prime[j]; if(i%prime[j]==0) { low[i*prime[j]]=low[i]*prime[j]; s[i*prime[j]]=s[i]+1; break; } low[i*prime[j]]=prime[j]; s[i*prime[j]]=1; } }}int main(){ pre(n=sc()); for(int i=2;i<=n;i++) { int now=i; while(now!=1) sum[lo[now]]+=2*s[now],now/=low[now]; } for(int i=1;i<=n;i++) ans=ans*(sum[i]+1)%mod; cout<

转载于:https://www.cnblogs.com/brucemengbm/p/7381307.html

你可能感兴趣的文章
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
网页消息类
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
日常一些出现bug的问题
查看>>
同时启动多个tomcat服务器
查看>>
怎么将iphone上的照片导出到本地文件
查看>>
Repeater+DataPagerSource分页
查看>>
模块化导出
查看>>
pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
查看>>
Sphinx 2.0.8 发布,全文搜索引擎 Installing Sphinx on Windows
查看>>
pod
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
LUOGU P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat…
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>