题解:

首先我们设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的更多相关文章

  1. SPOJ GCDEX (数论)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题意:求sigma (gcd (i , j))  ...

  2. (转载)有关反演和gcd

    tips : 积性函数 F (n) = Π F (piai ) 若F (n), G (n)是积性函数则 F (n) * G (n) Σd | n F (n) 是积性函数 n = Σd | n  φ ( ...

  3. 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 ...

  4. SPOJ DQUERY D-query(主席树)

    题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ...

  5. 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 ...

  6. 【填坑向】spoj COT/bzoj2588 Count on a tree

    这题是学主席树的时候就想写的,,, 但是当时没写(懒) 现在来填坑 = =日常调半天lca(考虑以后背板) 主席树还是蛮好写的,但是代码出现重复,不太好,导致调试的时候心里没底(虽然事实证明主席树部分 ...

  7. SPOJ bsubstr

    题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...

  8. 【SPOJ 7258】Lexicographical Substring Search

    http://www.spoj.com/problems/SUBLEX/ 好难啊. 建出后缀自动机,然后在后缀自动机的每个状态上记录通过这个状态能走到的不同子串的数量.该状态能走到的所有状态的f值的和 ...

  9. 【SPOJ 1812】Longest Common Substring II

    http://www.spoj.com/problems/LCS2/ 这道题想了好久. 做法是对第一个串建后缀自动机,然后用后面的串去匹配它,并在走过的状态上记录走到这个状态时的最长距离.每匹配完一个 ...

随机推荐

  1. std::function

    参考资料 • cplusplus.com:http://www.cplusplus.com/reference/functional/function/ • cppreference.com:http ...

  2. vscode/webstorm快捷键

    ctrl+/  单行 [alt+shift+A]  多行注释 (默认的  我已经修改了) 复制当前行:shift + alt +up/down(上下箭头)可以修改成ctrl+d(改成webstorm一 ...

  3. GDI+案例

    // // request_handler.cpp // ~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2003-2017 Christopher M. Kohlho ...

  4. fiddler学习总结--手机端(APP/微信小程序)抓包

    步骤一.手机和电脑要在同一个局域网中 步骤二.完成fiddler的基本配置,与web端抓包一样: TOOLS-->options-->connections-->1.设置端口:2.勾 ...

  5. 221. Maximal Square(动态规划)

    Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's and re ...

  6. 使用 Docker 搭建 Java Web 运行环境(转)

    原文 http://www.importnew.com/21798.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几 ...

  7. (TIP 2018)Technology details of FFDNet

    前言 论文地址:见researchgate, 方法继续更新. 解决的问题: 1.discriminative learning methods 用于denoising 任务学习到的是一个对于每种 噪声 ...

  8. HTTP请求中POST与GET的区别

      本文章已收录于:   一.原理区别 一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式. ...

  9. laravel 分页使用

    分页 //对数据库结果分页 $users = DB::table('users')->paginate(15); //可以对 Eloquent 模型分页: $allUsers = User::p ...

  10. Python Redis list

    List操作,redis中的List在在内存中按照一个name对应一个List来存储. 注:列表存入 从右到左 如图: lpush(name,values) # 在name对应的list中添加元素,每 ...