博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 2671 Calc
阅读量:6258 次
发布时间:2019-06-22

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

题目链接

题解

对于一对(a,b)(a,b)(a,b)满足a+b∣aba+b\mid aba+bab,假设d=gcd⁡(a,b),a=xd,b=ydd=\gcd(a,b),a=xd,b=ydd=gcd(a,b),a=xd,b=yd,那么

xd+yd∣xyd2x+y∣xydx+y∣d xd+yd\mid xyd^2\\ x+y\mid xyd\\ x+y\mid d xd+ydxyd2x+yxydx+yd
m=⌊n⌋m=\lfloor\sqrt{n}\rfloorm=n答案就是
∑j=1m∑i=1j−1⌊ni+j⌋[gcd⁡(i,j)=1]=∑d=1mμ(d)∑j=1⌊m/d⌋∑i=1j−1⌊nd2(i+j)⌋ \begin{aligned} & \sum_{j=1}^{m}\sum_{i=1}^{j-1}\lfloor\frac{n}{i+j}\rfloor [\gcd(i,j)=1]\\ = & \sum_{d=1}^{m}\mu(d)\sum_{j=1}^{\lfloor m/d\rfloor}\sum_{i=1}^{j-1}\lfloor\frac{n}{d^2(i+j)}\rfloor \end{aligned} =j=1mi=1j1i+jn[gcd(i,j)=1]d=1mμ(d)j=1m/di=1j1d2(i+j)n
复杂度大概是O(n3/4)O(n^{3/4})O(n3/4)的,这个请大家自行证明。

代码

#include 
#include
#include
int read(){
int x=0,f=1; char ch=getchar(); while((ch<'0')||(ch>'9')) {
if(ch=='-') {
f=-f; } ch=getchar(); } while((ch>='0')&&(ch<='9')) {
x=x*10+ch-'0'; ch=getchar(); } return x*f;}const int maxn=65536;int p[maxn+10],prime[maxn+10],cnt,mu[maxn+10];int getprime(){
p[1]=mu[1]=1; for(int i=2; i<=maxn; ++i) {
if(!p[i]) {
prime[++cnt]=i; mu[i]=-1; } for(int j=1; (j<=cnt)&&(i*prime[j]<=maxn); ++j) {
int x=i*prime[j]; p[x]=1; if(i%prime[j]==0) {
mu[x]=0; break; } mu[x]=-mu[i]; } } return 0;}long long calc(int n,int d){
long long ans=0; for(int i=1; i<=d; ++i) {
int t=n/i; for(int l=i+1,r; (l<(i<<1))&&(l<=t); l=r+1) {
r=std::min((i<<1)-1,t/(t/l)); ans+=1ll*(r-l+1)*(t/l); } } return ans;}int n,s;int main(){
getprime(); n=read(); s=sqrt(n); long long ans=0; for(int i=1; i<=s; ++i) {
ans+=mu[i]*calc(n/i/i,s/i); } printf("%lld\n",ans); return 0;}

转载于:https://www.cnblogs.com/Canopus-wym/p/10376084.html

你可能感兴趣的文章
vbs获取当前主机IP
查看>>
IIS7中的站点、应用程序和虚拟目录详细介绍
查看>>
为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈
查看>>
对Map按key和value分别排序
查看>>
知名第三方编译版tete009 Firefox 24.0
查看>>
java反射生成ORM
查看>>
堆和栈的区别
查看>>
生成CSV文件后再将CSV文件导入到mysql
查看>>
Html.DropDownListFor练习(2)
查看>>
Eclipse+Maven创建webapp项目<一>
查看>>
筑巢引凤
查看>>
C# console application executing macro function
查看>>
dll的概念 dll导出变量 函数 类
查看>>
HDUOJ------------1051Wooden Sticks
查看>>
Winform开发框架之权限管理系统改进的经验总结(4)--用户分级管理
查看>>
SQLSERVER PRINT语句的换行
查看>>
Web Service 的工作原理
查看>>
tesseract ocr文字识别Android实例程序和训练工具全部源代码
查看>>
嵌入式操作系统的调试
查看>>
DroidPHP-A PHP Webserver for android
查看>>