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

本文共 1001 字,大约阅读时间需要 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<

转载地址:http://nxkla.baihongyu.com/

你可能感兴趣的文章
浅谈URL生成方式的演变
查看>>
Linux下ssl+http 实现 HTTPS 访问服务器设置
查看>>
磁盘与文件系统管理之五
查看>>
python学习-递归
查看>>
day:35:netfilter防火墙的管理工具firewalld及iptables备份恢复
查看>>
第六讲:用户界面 View(二)
查看>>
lsof用户及恢复日志文件
查看>>
Python之获取系统信息--(二)
查看>>
IE9,IE10不能显示@font-face定义的字体
查看>>
JSP----ISPI
查看>>
oracle 归档日志满了如何处理
查看>>
虚函数
查看>>
jsp当中引入静态文件
查看>>
登陆框post注入教程
查看>>
maven打包
查看>>
我的友情链接
查看>>
如何对kubernetes scheduler进行二次开发
查看>>
单引号,双引号,不加引号的区别和使用规则
查看>>
【东东学数据结构】快速排序
查看>>
这一步我走了三个月
查看>>