spoj gcdex
题解:
首先我们设gcd(i,j)=k
所以我们就要求对于所有k的方案总数
可以线性帅选欧拉函数
然后算法一:枚举k,O(NT)
算法二:考虑到我们只要n/k的整数部分
容易证明是sqrt(n)级别的
所以就可以在O(Tsqrt(n))的时间内解决
但是要考虑卡常数
代码:
#include<bits/stdc++.h>
typedef long long ll;
const int N=;
ll ans,res[N],g[N],s[N];
int p[N],f[N],len=,n,a[N],b[N],tmp;
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
for (int i=;i<N;i++)
{
if (!f[i])f[i]=i,p[++len]=i;
for (int j=;j<=len&&p[j]<=f[i]&&p[j]<=N/i;j++)f[i*p[j]]=p[j];
}
for (int i=;i<N;i++)
{
if (f[i]==i) g[i]=i-;
else
{
int x=i/f[i];
if (f[i]==f[x]) g[i]=g[x]*f[i];
else g[i]=g[x]*(f[i]-);
}
}
for (int i=;i<N;i++)
{
s[i]=s[i-]+i;
g[i]+=g[i-];
res[i]=-;
}
while (scanf("%d",&n),n)
{
ans=;
int j;
for (j=;j*j<=n;j++)
{
a[j]=n/j;
ans+=g[a[j]]*j;
}
for (int k=n/j;j<=n;k--)
{
ans+=g[k]*(s[a[k]]-s[j-]);
j=a[k]+;
}
res[n]=ans;
printf("%lld\n",ans);
}
}
spoj gcdex的更多相关文章
- SPOJ GCDEX (数论)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题意:求sigma (gcd (i , j)) ...
- (转载)有关反演和gcd
tips : 积性函数 F (n) = Π F (piai ) 若F (n), G (n)是积性函数则 F (n) * G (n) Σd | n F (n) 是积性函数 n = Σd | n φ ( ...
- BZOJ 2588: Spoj 10628. Count on a tree [树上主席树]
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MBSubmit: 5217 Solved: 1233 ...
- SPOJ DQUERY D-query(主席树)
题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ...
- SPOJ GSS3 Can you answer these queries III[线段树]
SPOJ - GSS3 Can you answer these queries III Description You are given a sequence A of N (N <= 50 ...
- 【填坑向】spoj COT/bzoj2588 Count on a tree
这题是学主席树的时候就想写的,,, 但是当时没写(懒) 现在来填坑 = =日常调半天lca(考虑以后背板) 主席树还是蛮好写的,但是代码出现重复,不太好,导致调试的时候心里没底(虽然事实证明主席树部分 ...
- SPOJ bsubstr
题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...
- 【SPOJ 7258】Lexicographical Substring Search
http://www.spoj.com/problems/SUBLEX/ 好难啊. 建出后缀自动机,然后在后缀自动机的每个状态上记录通过这个状态能走到的不同子串的数量.该状态能走到的所有状态的f值的和 ...
- 【SPOJ 1812】Longest Common Substring II
http://www.spoj.com/problems/LCS2/ 这道题想了好久. 做法是对第一个串建后缀自动机,然后用后面的串去匹配它,并在走过的状态上记录走到这个状态时的最长距离.每匹配完一个 ...
随机推荐
- vscode/webstorm快捷键
ctrl+/ 单行 [alt+shift+A] 多行注释 (默认的 我已经修改了) 复制当前行:shift + alt +up/down(上下箭头)可以修改成ctrl+d(改成webstorm一 ...
- rpm 包的安装、卸载、升级、查询、验证
关键字: rpm 强制卸载jdk rpm -e j2sdk1.4.2_04 强制覆盖安装jdk rpm -Uvh j2sdk-1_4_1_02-fcs-linux-i586.rpm --force - ...
- html5 javascript 新增加的高级选择器更精准更实用
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- JVM内存结构分析
对于Java程序员来说,内存是由JVM自动管理的,所以一旦出现内存泄漏或溢出的问题,不了解JVM的内存结构和各个内存区域的工作职责,将对解决问题带来很大的麻烦,本文参照周志明的<深入理解Java ...
- 文件上传时出现 Processing of multipart/form-data request failed. Unexpected EOF read on the socket错误
上传时一直出现这个错误,修改tomcat的server.xml文件,更改tomcat版本,也查阅了网上的很多解决办法,都不能解决问题. 后在stackoverflow的一篇文章上找到了解决方法: 加上 ...
- 腾讯云主机如何使用root账号登录,不能使用root登录怎么办
1.先用ubuntu账号登录,执行sudo passwd root 2.按要求输入密码,请牢记. 3.执行sudo vi /etc/ssh/sshd_config 4.找到PermitRootLogi ...
- mysql数据库explain命令用法详解
本文转自一位前辈的文章,感觉写得很好,就转过来了.这个是那位前辈的原文地址:http://www.111cn.net/database/mysql/81698.htm 当我们在优化SQL时,想看 ...
- Servlet运行原理以及生命周期
一.Servlet生命周期: Servlet加载.实例化.初始化.服务.销毁. 1.初始化init(): 当服务启动时,Servlet被装入tomcat或者其他服务器容器时执行(服务器容器从启动到停止 ...
- BZOJ4779: [Usaco2017 Open]Bovine Genomics
题目描述 Farmer John owns Ncows with spots and N cows without spots. Having just completed a course in b ...
- Qt Windows打开指定文件注意替换双斜杠为单斜杠
QProcess::startDetached(QString("explorer %1").arg(strFilePath)); 其中,在windows上使用时,strFileP ...